Scanner
- Scanner是实现程序和用户交互的工具类,是JAVA 5的新特性,我们可以通过Scanner类来获取用户的输入。
- 需要在代码最上方添加类
import java.util.Scanner;
- 基本实现方法:
Scanner scanner=new Scanner(System.in);
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner=new Scanner(System.in);
System.out.println("请输入:");
//判断用户有没有输入字符串
if(scanner.hasNext()){
//使用next()方法接收
String str=scanner.next();//程序会等待输入
System.out.println("你的输入为: " +str);
}
scanner.close();//关闭通道
//凡是属于输入输出流的类,如果不关闭会一直占用资源
}
}
读取的结果只有Hello而没有空格后的World!是因为我们使用的是next()方法,它的特性就是不能得到带有空格的字符串。若使用nextLine()就不会出现这种情况。
next()特性:
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next()方法会将其自动去掉。
- 只有输入有效字符后才将其后面输入的空白作为分割符或者结束符。
- next()不能得到带有空格的字符串。
nextLine()特性:
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可有获得空白。
用nextLine()代替next()解决读取不全:
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入: ");
if(scanner.hasNextLine()){
String str=scanner.nextLine();
System.out.println("输出: "+ str);
}
scanner.close();
}
}
接收数字:
Scanner还有很多有关数字的方法可以使用。
例子:
问题:我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束,并打印结果。
import java.util.Scanner;//导入类
public class Den04 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double sum =0;
int count=0;
System.out.println("输入数字:");
while(scanner.hasNextDouble()){
sum = sum+ scanner.nextDouble();
count++;
}
System.out.println("总数:"+sum);
System.out.println("个数:"+count);
System.out.println("平均数:"+(sum/count));
}
}
结果:
推荐Java视频学习平台:狂神说Java