如何实现Java Scanner持续运行?连续输入检测问题求助
解决Scanner持续检测指定词汇的问题
我来帮你搞定这个Scanner持续运行的问题!先看看你代码里的几个关键问题:
- 语法错误:你的
if语句都少了闭合的右括号,比如if(a.equals("John"){应该写成if(a.equals("John")) {,这会直接导致编译失败。 - 缺少循环逻辑:你手动写了两次
nextLine(),只能处理两次输入,还强制要求输入顺序,完全不符合你“持续运行、无顺序检测”的需求。
下面是修正后的完整代码,能让程序一直运行,随时输入三个名字中的任意一个都能被正确检测到:
import java.util.Scanner; public class NameChecker { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 用无限循环实现持续运行 while (true) { System.out.println("Check out one of the names: John, Mike, Nick:"); String inputName = scanner.nextLine(); // 无顺序匹配输入的名字 if (inputName.equals("John")) { System.out.println("This is John"); } else if (inputName.equals("Mike")) { System.out.println("This is Mike"); } else if (inputName.equals("Nick")) { System.out.println("This is Nick"); } else { System.out.println("Oops, please enter a valid name: John, Mike, or Nick!"); } } } }
代码逻辑说明:
- 用
while(true)创建无限循环,让程序一直保持运行状态(如果需要退出程序,可以加个判断,比如输入exit就执行break跳出循环)。 - 每次循环内重新提示输入并读取一行内容,确保每一次输入都能被处理,不用手动重复编写
nextLine()。 - 用
else if结构实现无顺序判断,不管你先输入John、Mike还是Nick,都能正确匹配并输出对应内容。 - 增加了
else分支,当输入无效名字时给出提示,提升交互体验。
如果想要更灵活的扩展(比如后续要加新名字),可以用Set来存储有效名字,简化判断逻辑:
import java.util.Scanner; import java.util.Set; import java.util.HashSet; public class NameChecker { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Set<String> validNames = new HashSet<>(); validNames.add("John"); validNames.add("Mike"); validNames.add("Nick"); while (true) { System.out.println("Check out one of the names: John, Mike, Nick:"); String inputName = scanner.nextLine(); if (validNames.contains(inputName)) { System.out.println("This is " + inputName); } else { System.out.println("Oops, please enter a valid name!"); } } } }
这样后续要添加新名字,直接往Set里加就行,不用修改判断逻辑,维护起来更方便。
内容的提问来源于stack exchange,提问作者I want ask
相关产品推荐
相关产品推荐

