java中scanner里的NextLine()方法读取数据为空并且为让从键盘输入

今天我写了一个代码,是用switch来实现的计算器,但是在让输入字符的时候,用的是nextLine()方法,可是走到这个方法的时候,并没有让我输入,而是自己输入了一个"",也就是空字符串。

package com.baidu.switch1;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入第一个数字");
		int num1 = scanner.nextInt();
		System.out.println("请输入第2个数字");
		int num2 = scanner.nextInt();
		System.out.println("请输入你要进行什么运算");
		String nextLine = scanner.nextLine();
		switch (nextLine) {
		case "+":
			System.out.println(num1+num2);
			break;
		case "-":
			System.out.println(num1-num2);
			break;

		default:
			System.out.println("其他的就不测试了");
			break;
		}
	}
}

上面的内容就是出现情况的代码

怎么解决的 ?

后来我测试了一下,用next也是可以进行输入的。

但是我需要搞明白为什么。

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。


        简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。


        而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。




猜你喜欢

转载自blog.csdn.net/zhangzuyuanbest/article/details/79658497