读取输入
如果想要通过控制台进行输入,那么首先需要构造一个Scanner对象,并与“ 标准输入流”System.in关联
Scanner in = new Scanner(System.in);
现在, 就可以使用 Scanner 类的各种方法实现输入操作了
其中,所用到的Scanner类定义在 java.util 包中,所以需要import加载相应的包
当使用的类不是定义在基本 java.lang 包中时, 一定要使用 import 指示字将相应的包加载进来
Scanner中的常用api:
String nextLine()
- 读取输入的下一行内容
例如:
System.out.print("What is your name? ");
String name = in.nextLine();
String next()
- 读取输入的下一个单词(以空格作为分隔符)
int nextInt()
double nextDouble()
-
读取并转换下一个表示整数或浮点数的字符序列
boolean hasNext()
-
检测输人中是否还有其他单词
boolean hasNextInt()
boolean hasNextDouble()
-
检测是否还有表示整数或浮点数的下一个字符序列
因为输入是可见的, 所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别 引入了 Console 类实现这个目的。
格式化输出
常见的标准输出流System.out.println使用起来还是蛮简单的。
System.out.println("hello, world");
那么考虑下面一种情况:
double x = 10000.0 / 3.0;
System.out.println(x);
输出
3333.3333333333335
如果输出的值表示的是钱的多少,那么太多的小数点位数就显得很不方便了
庆幸的是, Java SE 5.0 沿用了 C 语言库函数中的 printf 方法。 例如, 调用
System.out.printf("%8.2f", x);
其可以用 8 个字符的宽度和小数点后两个字符的精度打印 x,也就是说, 打印输出一个空格和 7 个字符
输出
3333.33
在printf中,每一个以 % 字符开始的格式说明符都用相应的参数替换
另外, 还可以给出控制格式化输出的各种标志。 表 3-6 列出了所有的标志。 例如, 逗号 标志增加了分组的分隔符
System.out.printf("%,.2f", x);
输出
3,333.33
可以使用s转换符格式化任意的对象
可以使用静态的 String.format 方法创建一个格式化的字符串, 而不打印输出:
String message = String.format("Hello, %s. Next year, you'll be %d", name, age);