我用Java编写的这种方法有问题。
方法是取两个字符串。第一个字符串sArr
用于跟踪在解析第二个字符串时添加的字母。第二个字符串str
是一个整数字符串,其中每个整数按顺序用于添加到sArr
. 每个整数指的是不同的字母数组,例如:
String[] two = {"A", "B", "C"};
目前它是另一种方法的辅助方法。如果我输入任何内容,它只会使用输入的第一个数字。它应该从数字中输出集合的所有排列。所以输入 22 将输出:AA, AB, AC, BA, BB, BC, CA, CB, CC
我一直在使用的测试输入是printStrAux("", 23);
并且随后的输出是集合中的所有字母,2
如下所示:ABC
我不一定想得到答案,但任何帮助都会很棒。
public static void printStrings(String str){
if(isAllDigits(str))
System.out.println(printStrAux("", str));
}
protected static String printStrAux(String sArr, String str){
if(str.equals(""))
return sArr;
else{
Integer val = Integer.parseInt(str.substring(0, 1));
switch (val) {
case 1: printStrAux(sArr, str.substring(1));
break;
case 2:
for(int i = 0; i < two.length; i++){
printStrAux(sArr += two[i], str.substring(1));
}
break;
case 3:
for(int i = 0; i < three.length; i++){
printStrAux(sArr += three[i], str.substring(1));
}
break;
case 4:
for(int i = 0; i < four.length; i++){
printStrAux(sArr += four[i], str.substring(1));
}
break;
case 5:
for(int i = 0; i < five.length; i++){
printStrAux(sArr += five[i], str.substring(1));
}
break;
case 6:
for(int i = 0; i < six.length; i++){
printStrAux(sArr += six[i], str.substring(1));
}
break;
case 7:
for(int i = 0; i < seven.length; i++){
printStrAux(sArr += seven[i], str.substring(1));
}
break;
case 8:
for(int i = 0; i < eight.length; i++){
printStrAux(sArr += eight[i], str.substring(1));
}
break;
case 9:
for(int i = 0; i < nine.length; i++){
printStrAux(sArr += nine[i], str.substring(1));
}
break;
case 0: {
printStrAux(sArr, str.substring(1));
}
break;
}
}
return sArr;
}
请记住,对于我在这里做什么而不是我想要什么,我几乎没有真正的线索。