Java核心技术第3章(4)
2015-09-27 11:10
423 查看
3.7 输入输出
打印输出到"标准输出流"(即控制台窗口),只需调用System.out.println即可.然而,读取"标准输入流"System.in就没有那么简单了.要想通过控制台进行输入,首先需要构造一个Scanner对象,并与"标准输入流"System.in关联.Scanner in = new Scanner(System.in);现在,就可以使用Scanner类的各种方法实现输入操作了.例如,nextLine方法将输入一行.
System.out.print("what is your name?"); String name = in.nextLine();在这里,使用nextLine方法是因为在输入行中有可能包含空格.要想读取一个单词(以空白符为分隔符),就调用
String firstName = in.next();要想读取一个整数,就调用nextInt方法
System.out.print("how old are you?"); int age = in.nextInt();与此类似,要想读取下一个浮点数,就调用nextDouble方法.
最后,在程序的最开始添加上一行:
import java.util.*;Scanner类定义在java.util包中.当使用的类不是定义在基本java.lang包中时,一定要使用import指示字符将相应的包加载进来.
InputTest.java如下所示:
import java.util.*; /** * This program demonstrates console input */ public class InputTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); // get first input System.out.print("what is your name?"); String name = in.nextLine(); // get second input System.out.print("how old are you?"); int age = in.nextInt(); // display output on console System.out.println("hello, " + name + ", Next year,you'll be " + (age + 1)); } }java.util.Scanner的方法有如下:
Scanner(InputStream in);用给定的输入流创建一个Scanner对象
String nextLine()读取输入的下一行内容
String next()读取输入的下一个单词(以空格作为分隔符)
int nextInt() double nextDouble()读取并转换下一个表示整数或浮点数的字符序列
boolean hasNext()检测输入中是否还有其他单词
boolean hasNextInt() boolean hasNextDouble()检测是否还有表示整数或浮点数的下一个字符序列
3.7.2 格式化输出
可以使用System.out.print(x)将数值x输出到控制台上,这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x,例如:double x = 1000.0 / 3.0; System.out.print(x);打印
333.33333333335
Java沿用了C语言库函数中的printf方法,例如调用
System.out.printf("%8.2f", x);就可以用8个字符的宽度和小数点后两个字符的精度打印x.
在printf中,可以使用多个参数,例如:
System.out.printf("hello, %s, next year, you'll be %d", name, age);每一个以%字符开始的格式说明符都用相应的参数替换.
另外,还可以给出控制格式化输出的各种标志.例如,逗号标志增加了分组的分隔符.
可以使用静态的String.format方法创建一个格式化的字符串,而不打印输出:
String message = String.format("hello, %s, Next year, you'll be %d"
3.7.3 文件输入与输出
要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:Scanner in = new Scanner(Path.get("myfile.txt"));如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加上一个额外的反斜杠:"c:\\mydirctory\\myfile.txt".
要想写入文件,就需要构造一个PrintWriter对象.在构造器中,只需要提供文件名:
PrintWriter out = new PrintWriter("myfile.txt");如果文件名不存在,创建该文件.
注释:如果在命令行方式下用下列命令启动程序:
java MyProg启动路径就是命令解释器的当前路径.
如果已经知道有可能出现"找不到文件"的异常,就应该告知编译器.需要在main方法中使用throws子句标记,如下所示:
public static void main(String[] args) throw FileNotFoundException { Scanner in = new Scanner(Paths.get("myfile.txt"); }注释:当采用命令行方式启动一个程序时,可以利用重定向将任意文件捆绑到System.in和System.out:
java MyProg < myfile.txt > output.txt这样,就不必担心处理FileNotFoundException异常了.
java.util.Scanner的相关方法如下:
Scanner(File f);构造一个从给定文件读取数据的Scanner
Scanner(String data)构造一个从给定字符串读取数据的Scanner
PrintWriter(String fileName)构造一个将数据写入文件的PrintWriter.文件名由参数指定
相关文章推荐
- JavaWeb显示器
- Java泛型? extends E 和 ? super E
- static使用
- java中泛型的应用
- 【转】JAVA输出内容打印到TXT以及不同系统中如何换行
- 【转】如何在eclipse下配置Heritrix
- myeclipse 2015 stable2.0 激活
- Java的OutOfMemory问题
- spring_150907_sqlmapclientdaosupport_getSqlMapClient
- eclipse查看jar包源代码乱码问题解决
- eclipse中导入项目后提示错误:The project was not built due to"Could not delete'/文件夹路径名
- Java RandomAccessFile用法
- 排序算法之归并排序(JAVA)
- 二维数组的定义问题(java)
- Struts2的getServletContext().getRealPath("/WEB-INF")报空指针异常问题
- 学习java的乐趣
- Java编程思想第五章总结--初始化与清理
- java实战
- 韩顺平 java 第21讲、第22讲、第23讲、第24讲 集合
- Eclipse提交svn错误svn E210003 connection refused by the server