我正在尝试通过输入与某个字母对应的数字来进行解密方法。
使用当前代码,当我输入 25 时,我只会输出“ab”。 有人能指出我正确的方向吗?
我尝试过使用
char ch = Character.toLowerCase(str.charAt(i));
并且我的 ch
中有 switch
,但是当我达到数字 10+ 时,这给我带来了问题。
public void decryptNumbers() {
String str, newString = " ";
System.out.print("Numbers to decrypt: ");
try {
Scanner sc = new Scanner(System.in);
str = sc.nextLine();
for (int i = 0; i < str.length(); i++) {
int test1 = Integer.parseInt(String.valueOf(i));
switch (test1) {
case 0:
newString = newString + "a";
break;
case 1:
newString = newString + "b";
break;
case 2:
newString = newString + "c";
break;
case 3:
newString = newString + "d";
break;
case 4:
newString = newString + "e";
break;
case 5:
newString = newString + "f";
break;
case 6:
newString = newString + "g";
break;
case 7:
newString = newString + "h";
break;
case 8:
newString = newString + "i";
break;
case 9:
newString = newString + "j";
break;
case 10:
newString = newString + "k";
break;
case 11:
newString = newString + "l";
break;
case 12:
newString = newString + "m";
break;
case 13:
newString = newString + "n";
break;
case 14:
newString = newString + "o";
break;
case 15:
newString = newString + "p";
break;
case 16:
newString = newString + "q";
break;
case 17:
newString = newString + "r";
break;
case 18:
newString = newString + "s";
break;
case 19:
newString = newString + "t";
break;
case 20:
newString = newString + "u";
break;
case 21:
newString = newString + "v";
break;
case 22:
newString = newString + "w";
break;
case 23:
newString = newString + "x";
break;
case 24:
newString = newString + "y";
break;
case 25:
newString = newString + "z";
break;
case 26:
newString = newString + "æ";
break;
case 27:
newString = newString + "ø";
break;
case 28:
newString = newString + "å";
break;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("Decryption done:" + newString);
}
我想我开始理解你以前的代码(最好将其包含在问题中):
你有
char ch = Character.toLowerCase(str.charAt(i));
switch (ch) {
case '0':
newString = newString + "a";
break;
case '1':
newString = newString + "a";
break;
// more cases here
}
并且您不知道如何处理字母“k”的情况,因为为此您需要一个
case '10':
。
这是一个问题,因为“10”没有字符——数字“10”由两个字符组成。您无法处理一次只查看单个字符的代码。
这暗示了你的设计存在更深层次的问题。在您的设计中,输入包含“10”,它可能意味着两个不同的事物:
以目前的设计,你无法区分这两种情况。
修复设计的一种方法是分隔编码字母的数字,例如使用空格(
' '
)字符。这意味着
这将允许您区分这两种编码。