今天我写了一个代码,是用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键之前的所有字符,它是可以得到带空格的字符串的。

本文探讨了一段使用Java实现的简单计算器代码,在使用Scanner类的nextLine()方法时遇到的问题及原因。解释了next()与nextLine()的区别,帮助理解如何正确地从控制台接收带有空格的字符串。
5469

被折叠的 条评论
为什么被折叠?



