求改进
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CommandSelect {
static Scanner sc;
static String[] output;
static String string;
static String temp;
static List<String[]> list;
static int[] letters;
static int total;
static String[] cmd;
public static void main(String[] args) {
sc = new Scanner(System.in);
list = new ArrayList<>();
string = sc.nextLine();
letters = new int[26];
//利用ascii码来写
for(int i=string.length()-1;i>=0;i--) {
if(string.charAt(i)==':') {
letters[(int)(string.charAt(i-1))-97]=2;//2 表示带参数
i--;
} else {
letters[(int)(string.charAt(i))-97]=1; //1表示不带参数
}
}
total = sc.nextInt();
output = new String[26];
sc.nextLine();
for(int i=0;i<total;i++) {
temp = sc.nextLine()+" ";
cmd = temp.split(" ");
deal();
}
for(int i=0;i<list.size();i++) {
String str = "";
str+="Case"+(i+1)+":"+" ";
for(int j=0;j<list.get(i).length;j++) {
if(list.get(i)[j]!=null) {
str+=list.get(i)[j]+" ";
}
}
//去除字符串开始和结束的空格 使其符合输出结构
System.out.println(str.trim());
}
}
public static void deal() {
output = new String[26];
for(int i=1;i<cmd.length;i++) {
String out = "";
if(cmd[i].charAt(0)=='-'&&cmd[i].length()==2) {
//表示碰到了参数选项
if(letters[(int)(cmd[i].charAt(1)-97)]==2) {
//表示后面需要带参数
if(i==cmd.length-1 || ((i<cmd.length-1)&&(cmd[i+1].charAt(0)=='-'))) {
//如果是最后一个参数选项了或者后面这一个不是参数 那么跳出这个循环
break;
} else {
//说明后面是有参数的 cmd[i]是参数选项
output[(int)(cmd[i].charAt(1)-97)] = cmd[i]+" "+cmd[i+1];
i++; //继续跳过这个参数 再进行判断
}
} else if(letters[(int)(cmd[i].charAt(1)-97)]==1) {
//表示后面不需要带参数
if((i<cmd.length-1)&&(cmd[i+1].charAt(0)!='-')) {
//本来不需要参数 但是后面出现了参数 该行分析到这里结束
break;
}
output[(int)(cmd[i].charAt(1)-97)] = cmd[i];
} else {
//没有在所给定的命令行选项中
break;
}
} else {
break;
}
}
list.add(output);
}
}