从控制台接收输入字符
System类除了out和err两个输出流之外,还有in输入流的实例对象作为类成员,它可以接收用户的输入。本实例通过该输入流实现从控制台接收用户输入文本,并提示该文本的长度信息。实例运行效果如图所示。
本实例的关键技术就是用到了System类的输入流也就是类变量in,它可以接收用户的输入信息,并且是标准的输入流实例对象。另外,Scanner类是Java的扫描器类,它可以从输入流中读取指定类型的数据或字符串。本实例使用Scanner类封装了输入流对象,并使用nextLine()方法从输入流中获取用户输入的整行文本字符串,该方法的声明如下:
public String nextLine()
该方法从扫描器封装的输入流中获取一行文本字符串作为方法的返回值。
创建InputCode类,在该类的主方法中创建Scanner扫描器来封装System类的in输入流,然后提示用户输入身份证号码,并输出用户身份证号码的位数。代码如下:
import java.util.Scanner;
public class InputCode {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);// 创建输入流扫描器
System.out.println("请输入你的身份证号:");// 提示用户输入
String line = scanner.nextLine();// 获取用户输入的一行文本
// 打印对输入文本的描述
System.out.println("原来你身份证号是" + line.length() + "位数字的啊");
}
}
心法领悟:灵活使用扫描器。
InputStream输入流以字节为单位来获取数据,而且需要复杂的判断并创建字节数组作为缓冲,最主要的是字节转换为字符时容易出现中文乱码的情况,所以对于字符数据的读取,应该使用扫描器进行封装,然后获取字符串类型的数据。