学习日记
用户交互 Scanner
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。
- 使用 next() 方法
package com.Sun3285.scanner;
import java.util.Scanner;
public class PracticeOne {
public static void main(String[] args) {
//创建一个扫描器对象 scanner,用于接收键盘数据
Scanner scanner = new Scanner(System.in); //通过 System.in 接收用户的输入,封装为 scanner 对象
System.out.println("使用 next 方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用 next 方式接收
String str = scanner.next();
System.out.println("输入的内容为:" + str);
}
//凡是属于 IO 流的类,如果不关闭会一直占用资源,要养成好习惯,用完就关掉
scanner.close();
}
}

- 使用 nextLine() 方法
package com.Sun3285.scanner;
import java.util.Scanner;
public class PracticeTwo {
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);
}
//凡是属于 IO 流的类,如果不关闭会一直占用资源,要养成好习惯,用完就关掉
scanner.close();
}
}

- next() 和 nextLine() 区别
① next() 在输入有效字符后才将其后面的空白作为分隔符或结束符,回车结束输入,nextLine() 遇到回车结束输入。
② next() 不能获得空白,nextLine() 可以。
③ next() 在输入有效字符前遇到空白,自动将其去掉。
- Scanner 进阶使用一:判断输入是否是整数或小数。
package com.Sun3285.scanner;
import java.util.Scanner;
public class PracticeThree {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int x = 0;
double y = 0.0;
System.out.println("请输入数字:");
if(scanner.hasNextInt()){
x = scanner.nextInt();
System.out.println("这个数是整数!");
}else{
if(scanner.hasNextDouble()){
y = scanner.nextDouble();
System.out.println("这个数是小数!");
}else{
System.out.println("输入不是整数或小数");
}
}
scanner.close();
}
}

- Scanner 进阶使用二:输入多个数字,求其总和和平均数,每输入一个数字回车确认,通过输入非数字结束输入并输出结果。
package com.Sun3285.scanner;
import java.util.Scanner;
public class PracticeFour {
public static void main(String[] args) {
//输入多个数字,求其总和和平均数,每输入一个数字回车确认,通过输入非数字结束输入并输出结果
Scanner scanner = new Scanner(System.in);
//计算输入了多少个数字
int a = 0;
//和
double sum = 0;
System.out.println("请输入数字后按 Enter 确认,输入非数字结束:");
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
a++; //a = a + 1;
sum = sum + x;
System.out.println("当前输入"+a+"个数字,现在的总和为:"+sum);
}
System.out.println(a + "个数的总和为:" + sum);
System.out.println(a + "个数的平均数为:" + sum/a);
scanner.close();
}
}

输入小数时可能会出现问题,如

注意:
- Alt + Enter 可以自动检查错误的地方。










