基本语法
Scanner sc = new Scanner(System.in)
Scanner中通过next()
或者nextLine()
来获取用户输入的字符串,在读取之前还需要通过hasNext()
和hasNextLine()
来判断用户是否有输入的情况
请看这两段代码:
第一段:使用next()获取用户输入
//获取键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("next()方法输入:");
//判断用户是否输入
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为:" + str);
}
//关闭流
scanner.close();
测试:
第二段:使用nextLine()获取用户输入
Scanner sc = new Scanner(System.in);
System.out.println("nextLine()输入:");
if(sc.hasNextLine()){
String str = sc.nextLine();
System.out.println(str);
}
sc.close();
测试:
对比一下可以看出next()
和nextLine()
的区别
next()
不可以获取到空白,但是可以忽视开头的空白,而nextLine()
可以显示出空白
Scanner进阶
Scanner类中定义了很多方法,比如用户输入时可以是不同类型的数字,Scanner都可以检测出来:
//获取键盘输入
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("输入的不是小数!");
}
练习:输入多个数字,求总和和平均数,没输入一个数字就回车进行确认,若输出的不是数字则得出结果。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
//当前第几个数
int m = 0;
//不满足条件直接跳出循环
while (scanner.hasNextDouble()){
//获得输入的值
double nextDouble = scanner.nextDouble();
m++;
sum = sum + nextDouble;
System.out.println("你输入了" + m + "个数字,当前结果sum=" + sum);
}
System.out.println(m + "个数字和为:" + sum);
System.out.println(m + "个数的平均值为:" + sum/m);
scanner.close();
}