JAVA人机交互Scanner的使用
程序员文章站
2022-03-04 21:10:46
...
Java Scanner 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,我喜欢叫它扫描仪。
下面是创建 Scanner 对象的基本语法:
Scanner scanner = new Scanner(System.in);
//基本使用块
//·········
//一般使用I/O流类,一定要记得结束对它的使用
scanner.close();
基本的使用
next()方法:
/**
* next()方法:
* 一定要接受有效字符
* 对空白之前的字符会自动将其去掉
* 以空白或Enter为结束
*/
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
//关闭scanner
scanner.close();
测试结果:
显然输入和输出不一样,next()方法中是以空格和Enter为结束符,在空格以后的他都不会再接收存在str中。
nextLine()方法:
/**
* nextLine()方法:
* 以Enter为结束符
* 可以接收空白
*/
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方法接收:");
if (scanner.hasNext()){
String str = scanner.nextLine();
System.out.println("输出的内容:"+str);
}
scanner.close();
测试结果:
使用nextLine()可以接收一整行的字符串,以Enter接收,等于就是相当于可以接收一整行的数据。
next()和nextLine()返回的都是String类型
下面为接收其他类型的类型的方法:
boolean nextBoolean()
byte nextByte()
double nextDouble()
float nextFloat()
int nextInt()
long nextLong(int radix)
short nextShort()
以nextFloat()和nextInt()为例子:
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:"+i);
} else{
System.out.println("输入的不是整数数据!");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:"+f);
} else{
System.out.println("输入的不是小数数据!");
}
scanner.close();
测试结果:
上诉测试是在第一次输入的不是整数的情况下,代码中的第一个if不通过,但是第二个if可以通过,两次扫描第一个扫描不接收,但是第二个扫描可以接收。