[英]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.