Java中如何识别以.开头的无效命令并返回提示?
问题描述
需要实现:当用户输入以.开头的非预设命令(如.help、.ping)时,程序识别为无效命令,并返回提示信息invalid command type .help for a list of commands。目前已完成有效命令的逻辑,但不确定如何捕获这类无效命令,现有代码如下:
while (true) { String userInput = scan.nextLine(); if (userInput.equals(".help")) { //print list of commands } else if (userInput.equals(".ping")) { //print pong } //check for any String that starts with . but does not equal the previous commands and return an error message }
解决方案
方式1:直接判断前缀并排除有效命令
在现有命令判断分支之后,添加一个条件块,专门处理以.开头但不属于有效命令的输入:
while (true) { String userInput = scan.nextLine(); if (userInput.equals(".help")) { // 打印命令列表 System.out.println("可用命令:.help、.ping"); } else if (userInput.equals(".ping")) { // 打印pong System.out.println("pong"); } else if (userInput.startsWith(".")) { // 触发无效命令提示 System.out.println("invalid command type .help for a list of commands"); } // 若有其他非.开头的输入需要处理,可在此添加逻辑 }
方式2:用集合存储有效命令(便于后续扩展)
如果之后需要添加更多命令,用集合管理有效命令会更简洁,避免嵌套过多的else if:
import java.util.HashSet; import java.util.Scanner; public class CommandHandler { public static void main(String[] args) { Scanner scan = new Scanner(System.in); HashSet<String> validCommands = new HashSet<>(); validCommands.add(".help"); validCommands.add(".ping"); while (true) { String userInput = scan.nextLine(); if (userInput.equals(".help")) { System.out.println("可用命令:.help、.ping"); } else if (userInput.equals(".ping")) { System.out.println("pong"); } else if (userInput.startsWith(".") && !validCommands.contains(userInput)) { System.out.println("invalid command type .help for a list of commands"); } } } }
核心逻辑说明
- 优先处理所有已定义的有效命令,确保不会被误判
- 最后通过
startsWith(".")筛选出以.开头的输入,再排除有效命令,触发错误提示
内容的提问来源于stack exchange,提问作者kidlo22
相关产品推荐
相关产品推荐

