Java学习笔记(四)

虽然现代的程序都使用 GUI 收集用户的输入,但我们现在只是需要熟悉Java程序设计语言,因此只要有简单的用于输入输出的控制台就可以了。

Java程序的输入输出

这是一件很简单的事情,我们简要描述:

读取输入

想要通过控制台进行输入,首先需要构造一个 Scanner 对象,并与“标准输入流” System.in 关联:

Scanner in = new Scanner(System.in);

现在,就可以使用 Scanner 类的各种方法实现输入操作了。例如, nextLine 方法将输入一行:

System.out.print("What is your name? ");
String name = in.nextLine();

想要读取一个单词(以空白符作为分隔符),就调用 next 方法。

想要读取一个整数,就调用 nextInt 方法:

System.out.print("How old are you? ");
int age = in.nextInt();

类似的,想要读取下一个浮点数,就调用 nextDouble 方法。

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

import java.util.*;

注释: 因为输入是可见的,所以 Scanner 类不适用于从控制台读取密码。要读取一个密码,可以采用下列代码:

 Console cons = System.console();
 String username = cons.readLine("User name: ");
 char[] passwd = cons.readPassword("Password: ");`

对上面注释的思考:
返回的密码存放在一堆字符数组中,而不是字符串中,这样更安全。在对密码进行处理后,应该马上用一个填充值覆盖数组元素。
采用 Console 对象处理输入不如采用 Scanner 方便。每次只能读取一行输入,而没有能够读取一个单词或一个数值的方法。

格式化输出

Java SE 5.0 沿用了 C 语言库函数中的 printf 方法。例如,调用

double x = 1000.0/3.0;
System.out.println(x);
System.out.printf("%8.2f", x);

可以用8个字符的宽度和小数点后2个字符的精度打印 x 。也就是说,打印输出一个空格和7个字符,如下所示:

这里写图片描述
printf 中,可以使用多个参数,例如:

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

用于 printf 的转换符

转换符类型举例
d十进制整数159
x十六进制整数9f
o八进制整数237
f定点浮点数15.9
s字符串Hello
c字符H
b布尔True
%百分号%

另外,还可以给出控制格式化输出的各种标志。例如,逗号标志增加了分组的分隔符。即

System.out.printf("%,.2f", 10000.0/3.0);

结果如下:

这里写图片描述

用于 printf 的标志

标志目的举例
+打印整数和负数的符号+3333.33
空格在整数之前添加空格/ 3333.33/
0数字前面补0003333.33
-左对齐/3333.33 /

可以使用静态的 String.format 方法创建一个格式化的字符串,而不打印输出:

String message = String.format("Hello, %s.Next year, you'll be %d", name,age);

不介绍 printf 方法中日期与时间的格式化选项总感觉缺点什么,下面简要概述:

System.out.printf("%tc", new Date());

这条语句将用下面的格式打印当前的日期和时间:

Non Feb 09 18:05:19 PST 2015

在我电脑中的运行结果截图:

这里写图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值