簡體   English   中英

我的“解密”代碼無法正常工作

[英]My 'decrypt' code doesn't work correctly

我不確定,但是我想我的問題是我的函數沒有比較字符的正確性。 我也可以使用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);
}
switch (getChar)//<--You are passing charcter in switch case 
//but checking for 1,2 int as case 1,2...

您需要更改的是您的case

如在switch您將傳遞像a,b,c...這樣a,b,c...字符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”等) )。

如果所有情況的處理方式幾乎完全相同,並且可以輕松轉換為單個計算,則switch語句不是最佳選擇。 您可以使用以下if / else塊替換整個switch語句:

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

注意:@TAsk和@MarounMaroun建議您使用StringBuilder建立結果是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM