import java.util.Scanner;
public class ScannerInput {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("Please input your name:");
System.out.printf("Hello, %s.\n", scanner.next());
System.out.print("Please input a number:");
System.out.printf("%d\n", scanner.nextInt());
}
}
“new“表示新增一个Scanner对象,在新增一个 Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得使用者的输入,您可以将Scanner看作是 System.in对象的支持者,System.in取得使用者输入之后,交给Scanner作一些处理(实际上,这是 Decorator 模式 的一个应用)。
简单的说,您告诉执行环境新增一个Scanner对象,然后使用它的next()方法来取得使用者的输入字符串,使用 Scanner对象的nextInt()方法取得数字。同样的,您还可以使用Scanner的nextFloat()、nextBoolean()等方法来取得使用者的输入,并转换为正确的 数据型态。
要注意的是,Scanner取得输入的依据是空格符,举凡按下空格键、tab键或是enter键,Scanner就会传回下一个输入,如果您想要取得包 括空格符的输入,比较简单的方法是 使用 BufferedReader 类别取得输入。
使用 BufferedReader 类别取得输入
(1)、BufferedReader类别,它是java.io套件中所提供的一个类别,所以使用这个类别时必须先import java.io套件;
(2)、使用BufferedReader对象的readLine()方法必须处理IOException例外(exception),例外处理机制是Java提 供给程序设计人员捕捉程序中可能发生的错误所提供的机制,现阶段您处理IOException的方法是在main()方法后,加上 throws IOException,这在以后会再详细讨论为何要这么作。
BufferedReader在建构时接受一个Reader对象,在读取标准输入串流时,会使用InputStreamReader,它 继承了Reader类别,您使用以下的方法来为标准输入串流建立缓冲区对象: