Bootstrap

Java知识点——输入输出

读取输入

只要调用System.out.println就可以实现打印输出到“标准输出流”(即控制台窗口)。然而,读取“ 标准输入流” System.in 就没有那么简单了。要想通过控制台进行输入,首先需要构造一个 Scanner 对象,并与“ 标准输入流” System.in 关联。

	Scanner in = new Scanner(System.in);

现在就可以使用Scanner类的各种方法实现输入操作。

方法实现功能
Scanner (InputStream in)用给定的输入流创建一个 Scanner 对象
String nextLine( )读取输入的下一行内容
String next( )读取输入的下一个单词(以空格作为分隔符)
int nextlnt( )读取并转换下一个表示整数的字符序列
double nextDouble( )读取并转换下一个表示浮点数的字符序列
boolean hasNext( )检测输入中是否还有其他单词
boolean hasNextInt( )检测是否还有表示整数的下一个字符序列
boolean hasNextDouble( )检测是否还有表示浮点数的下一个字符序列

Scanner 类定义在java.util 包中。因此使用Scanner类需要在程序的最开始添加上一行:

import java.util.*;

当使用的类不是定义在基本java.lang 包中时,一定要使用import 指示字将相应的包加载进来。

格式化输出

在早期的 Java 版本中,格式化数值曾引起过一些争议。庆幸的是,Java SE 5.0 沿用了 C语言库函数中的 printf方法。在 printf中,可以使用多个参数, 例如:

	System.out.printf("Hello,%s.Next year, you'll be %d", name, age);

每一个以 % 字符开始的格式说明符都用相应的参数替换。 格式说明符尾部的转换符将指示被格式化的数值类型。下表列出了printf所有转换符

转换符类型举例
d十进制整数159
s字符串Hello
x十六进制整数9f
c字符H
o八进制整数237
b布尔True
f定点浮点数15.9
h散列码42628b2
e指数浮点数1.59e+01
g通用浮点数
%百分号%
a十六进制浮点数0xl.fccdp3
n与平台有关的行分隔符

另外,还可以给出控制格式化输出的各种标志。下表列出了printf所有的标志

标志目的举例
+打印正数和负数的符号+3333.33
空格在正数之前添加空格
0数字前面补 0003333.33
-左对齐
(将负数括在括号内( 3333.33 )
,添加分组分隔符3,333.33
# ( 对于 f 格式)包含小数点3,333.
# (对于 x 或 0 格式)添加前缀 0x 或 00xcafe
$给定被格式化的参数索引159 9F
<格式化前面说明的数值159 9F

文件输入与输出

要想对文件进行读取,就需要一个用 File 对象构造一个 Scanner 对象,如下所示:

	Scanner in = new Scanner(Paths.get("niyflle.txt"), "UTF-8");

如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: “ c:\mydirectory\myfile.txt ” 。
现在,就可以利用前面介绍的任何一个 Scanner 方法对文件进行读取。要想写入文件, 就需要构造一个 PrintWriter 对象。在构造器中,只需要提供文件名:

	PrintWriter out = new PrintWriterC('myfile.txt", "UTF-8");

如果文件不存在,创建该文件。 可以像输出到 System.out—样使用 print、 println 以及 printf命令。

;