用正则表达式实现。用输入的命令构造正则。
public static void main(String[] args){ Scanner sc=new Scanner(System.in); TreeMap<String,String> tm=new TreeMap<String,String>(); tm.put("reset","reset what"); tm.put("reset board","board fault"); tm.put("board add","where to add"); tm.put("board delete","no board at all"); tm.put("reboot backplane","impossible"); tm.put("backplane abort","install first"); while(sc.hasNext()){ String cmd=sc.nextLine().trim(); String[] cmd_split=cmd.split("\\ +");//按空格分割 String pipei=""; for(int i=0;i<cmd_split.length-1;i++){ pipei=pipei.concat(cmd_split[i]+"[a-z]*\\ +");//匹配关键字和空格 } pipei=pipei.concat(cmd_split[cmd_split.length-1]+"[a-z]*");//匹配关键字,不带空格 String output="unknown command"; boolean flag=true;//是否匹配到多个 for(Map.Entry<String,String> cmdEntry : tm.entrySet()){ if(cmdEntry.getKey().matches(pipei)){ if(flag){ output=cmdEntry.getValue(); flag=false; } else { output="unknown command"; break;//匹配到多个,跳出循环 } } } System.out.println(output); } }