我的'解密'代码无法正常工作

时间:2014-06-23 14:16:18

标签: java

我不确定,但我认为我的问题是我的功能不能比较char的权利。我还使用Switch吗?

我的输入x是一个字符串,当x =“aaaaa”时,它返回“aaaaa”而不是“zzzzz”。

String c = "";
        for (int i = 0; i < x.length(); i++) {
            char getChar = x.charAt(i);

            switch (getChar) {
                case 1: (getChar) = 'a';
                        c += "z";
                        break;
                case 2: (getChar) = 'b';
                        c += "y";
                        break;
                case 3: (getChar) = 'c';
                        c += "x";
                        break;
                case 4: (getChar) = 'd';
                        c += "w";
                        break;
                case 5: (getChar) = 'e';
                        c += "v";
                        break;
                case 6: (getChar) = 'f';
                        c += "u";
                        break;
                case 7: (getChar) = 'g';
                        c += "t";
                        break;
                case 8: (getChar) = 'h';
                        c += "s";
                        break;
                case 9: (getChar) = 'i';
                        c += "r";
                        break;
                case 10:(getChar) = 'j';
                        c += "q";
                        break;
                case 11:(getChar) = 'k';
                        c+= "p";
                        break;
                case 12:(getChar) = 'l';
                        c += "o";
                        break;
                case 13:(getChar) = 'm';
                        c += "n";
                        break;
                default :
                        c += x.charAt(i);
            }
        }

    System.out.println(c);
}

2 个答案:

答案 0 :(得分:5)

switch (getChar)//<--You are passing charcter in switch case 
//but checking for 1,2 int as case 1,2...

您需要更改的内容是case

switch一样,您将传递a,b,c...

等字符
switch(getchar)
{
 case 'a':
  //yourwork
  break;
 //do this for all letters
}

此外,为了汇总String,您应该使用StringBuilder(如Maroun Maroun)已经建议并使用stringBuilder.append('char')方法将您的角色直接添加到String builder中,无需使用String(即“a”,“b”等)。

答案 1 :(得分:0)

如果所有案例都以几乎完全相同的方式处理并且可以轻松转换为单个计算,则switch语句不是最佳选择。您可以使用此if / else块替换整个switch语句:

if (getChar >= 'a' && getChar <= 'm') {
    char newChar = (char) ('z' - (getChar - 'a'));
    c += newChar;
} else {
    c += getChar;
}

注意:@TAsk和@MarounMaroun建议您使用StringBuilder来建立结果。