代码中nextLine()输入为空字符串而next()可输入,原因及解决
今天我写了一个代码,这个代码是通过 switch 来实现的计算器。在让输入字符的过程中,使用的是 nextLine()方法。然而,当走到这个方法时,并没有让我进行输入操作,而是它自己输入了一个“”,也就是空字符串。

<code class="language-java">package com.baidu.switch1; import java.util.Scanner; public class Test2 { 公共静态 void 主函数(字符串数组 args){ } 创建一个 Scanner 对象,该对象用于从系统输入流(System.in)中读取用户输入。 System.out.println("要输入第一个数字啦"); int num1 = scanner.nextInt(); 以特定的输出方式即 System.out.println 输出“请输入第 2 个数字”; int num2 = scanner.nextInt(); System.out.println("请输入你要进行何种运算"); 使用 scanner 读取下一行内容并赋值给 nextLine 变量。 switch (nextLine) { case "+": 输出 num1 与 num2 相加的结果。 break; case "-": 输出 num1 减去 num2 的结果。 break; default: System.out 会打印出“其他的就不测试了”。 break; } } }
上面的内容就是出现情况的代码
怎么解决的 ?
后来我测试了一下,用next也是可以进行输入的。
但是我需要搞明白为什么。
next()需读取到有效字符才可结束输入。对于输入有效字符之前所遇到的空格键、Tab 键或 Enter 键等结束符,next()方法会自动将其去除。仅在输入有效字符之后,next()方法才会将其后输入的空格键、Tab 键或 Enter 键等视为分隔符或结束符。
简单来说,next()的作用是查找并返回此扫描器的下一个完整标记。这个完整标记的前后是与分隔模式相匹配的输入信息。正因如此,next 方法无法获取带空格的字符串。
NextLine()方法的结束符仅为 Enter 键。也就是说,NextLine()方法返回的是 Enter 键之前的所有字符。并且,它能够获取到包含空格的字符串。