Scanner跳过
在使用nextLine()接收数据时,如果在nextLine()前面使用了next()、nextInt()、nextDouble()等一些基本类型之后,会出现nextLine()接收空白的现象,如下是实例和解决办法。
import java.util.Scanner;
public class Demo15 {
public static void main(String[] args) {
//nextLine 跳过
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字:");
double a = scanner.nextDouble();
System.out.println(a);
System.out.println("请输入运算符:");
String run = scanner.nextLine();
System.out.println(run);
System.out.println("请输入第二个数字:");
double b = scanner.nextDouble();
System.out.println(b);
/* 以上代码会输出如下结果
请输入第一个数字:
12
12.0
请输入运算符:
请输入第二个数字:
12
12.0
分析:nextLine()是逐行输入的,会接收上面nextInt()后面忽略的enter键,(也可以忽略next()等基本类型),所以造成了上述问题。
解决办法:
1. nextLine()用到最前面;
2. nextLine()前面再加一个nextLine()用于接收前面产生的enter;
3. nextLine()换成next()
*/
//修成后的代码
System.out.println("请输入第三个数字:");
double c = scanner.nextDouble();
System.out.println(a);
System.out.println("请输入运算符:");
//String notuse = scanner.nextLine(); 定义一个不用的变量接收enter
String run1 = scanner.next();
System.out.println(run);
System.out.println("请输入第二个数字:");
double d = scanner.nextDouble();
System.out.println(b);
scanner.close();
}
}