读取输入
标准输出流:
System.out.println();
标准输入流:
-
想要通过控制台输入,需要先构造一个与“标准输入流”System.in关联的Scanner对象
Scanner in=new Scanner(System.in);
-
nextLine方法将读取一行输入:
-
想要读取一个单词可以调用next方法
-
读取一个整数可以用nextInt方法(读取一个单词)
-
与此类似,想要读取下一个浮点数用nextDouble
-
检测输入中是否还有其他单词用boolean hasNext()方法
-
检测输入中是否还有下一个整数bool用ean hasNextInt()方法
-
检测输入中是否还有下一个浮点数用boolean hsaNextDouble()方法
-
交互结束后使用Scanner.close()方法将其关闭,减少占用资源
格式化输出
-
Java5沿用了C语言函数库的printf方法
这会以一个字段宽度打印x:这包括8个字符,另外精度为小数点后两个字符,也就是说,这会打印一个前导的空格和七个字符
-
也可以为printf提供多个参数
用于printf的转换符
转换符 | 类型 | 示例 |
---|---|---|
d | 十进制整数 | 159 |
x | 十六进制整数 | 9f |
o | 八进制整数 | 237 |
f | 定点浮点数 | 15.9 |
e | 指数浮点数 | 1.59e+01 |
g | 通用浮点数 | |
a | 十六进制浮点数 | 0x1.fccdp3 |
s | 字符串 | Hello |
c | 字符 | H |
b | 布尔 | true |
h | 散列码 | 42628b2 |
tx或Tx | 日期时间 | 已经过时,应该用Java.Time类 |
% | 百分号 | % |
n | 与平台有关的行分隔符 |
-
另外还可以使用控制格式输出外观的各种标识,例如
用于printf的标志
标志 | 目的 | 示例 |
---|---|---|
+ | 打印整数和负数的符号 | +33.333 |
空格 | 在正数之前加上空格 | | 333.33| |
0 | 在数字之前补零 | 000333.33 |
- | 左对齐 | |333.33 | |
( | 将负数括在括号里 | (333.33) |
, | 添加分组分隔符 | 333,333.33 |
#(对于f格式) | 包含小数点 | 3,333.33 |
#(对于x或者o格式) | 添加前缀0x或0 | 0xcafe |
$ | 指定要格式化的参数索引。例如%1d %1x将以十进制的格式打印第一个参数 | 159 9F |
< | 格式化前面的说明的数值,例如,%d%<x将以十进制和十六进制打印同一个数值 | 15 9F |
-
可以使用静态的String.format方法创建一个格式化的字符串,而不打印输出:
文件输入与输出
-
想要读取一个文件,需要构造一个Scanner对象
Scanner in =new Scanner(Path.of(myfile.txt),StandardCharsets.UTF_8)
-
如果文件名中包含反斜杠符号,就需要在每个反斜杠符号之前再加上一个反斜杠符号转义
-
想要写入一个文件,需要构造一个PrintWriter对象,
PrintWriter out =new PrintWriter("myfile.txt",StandardCharsets.UTF_8)
参考书籍:Java核心技术 卷1(原书第11版)