用户交互Scanner
Scanner对象
java.util.Scanner时Java5的特性,我们可以通过Scanner类来获取用户的输入
基本语法
Scanner s = new Scanner (System.in); //创建扫描仪对象
常用方法
next() //接收一个字符串,遇到空白即结束
nextLine() //接受指针指向缓存空间后面的所有字符
hasNext() //判断是否还有下一个的字符串
hasNextLine() //判断是否还有下一行字符串
注意
根据官方文档 hasNext()方法 和 hasNextLine()方法 都不会返回false ,而是出现阻塞 ,所以往往在判断时要指定字符串结束的信号
例如
while (!scanner.hasNext("#")){
}
实例
代码
package ProcessControl;
//导入scnner类的包
import java.util.Scanner;
public class ScannerObject {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要输出的字符串:");
while (!scanner.hasNext("#")) {
//接收字符串
String next = scanner.next(); //next()方法遇到空白(空格)即结束
System.out.println(next);
}
while (scanner.hasNextLine()) {
String nextLine = scanner.nextLine();
System.out.println(nextLine);
}
//关闭扫描仪,否则会一直占用资源
scanner.close();
}
}
结果
分析
第一个while时,指定了结束条件为“#”
第二个while从指向“#”开始向后读取直到结束
拓展
Scanner不仅可以接受字符串,还可以接收整数、小数等等
但是要通过nextInt()方法、nextFloat()方法等
System.out.println("请输入一个数:");
if (scanner.hasNextInt()){ //判断输入的是否为整数
int i = scanner.nextInt();
System.out.println("这是一个整数"+i);
}
else if (scanner.hasNextFloat()){ //判断输入的是否为小数
float v = scanner.nextFloat();
System.out.println("这是一个小数"+v);
}