用正则表达式实现。用输入的命令构造正则。
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);
}
}
京公网安备 11010502036488号