4 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
那是因?yàn)槟阍噲D返回 a而你的函數(shù)char
的返回類型是。在Java中,和是不同的數(shù)據(jù)類型,這意味著它們不可互換,所有數(shù)據(jù)類型也是如此。如果您使用 IDE,您會(huì)收到警告,因此我建議您先在 IDE 中編寫代碼,然后再將其粘貼到 Coding Bat。CaesarCipher
String
char
String
我相信這就是您所需要的:
public String CaesarCipher(int shift, String message) {
? String result = "";
? for (int i = 0; i < message.length(); i++) {
? ? char letter = message.charAt(i);
? ? if (Character.isUpperCase(letter)) {
? ? ? int ascii = (int) letter;
? ? ? ascii += shift;
? ? ? result += Character.toString((char)ascii);
? ? } else {
? ? ? result += Character.toString(letter);
? ? }
? }
? return result;
}

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
該錯(cuò)誤代碼意味著該return語句沒有給出正確的變量類型。你的方法想要String返回,但正在獲取char。char通過將您的to更改String為可以輕松解決此問題String.valueOf(newMsg)。
public static String CaesarCipher(int shift, String message) {
for (int i = 0;i < message.length(); i++){
char letter = message.charAt(i);
if (Character.isUpperCase(letter)){
int ascii = (int)letter;
ascii += shift;
char newMsg = (char)ascii;
return String.valueOf(newMsg);
}
else{
return String.valueOf(letter);
}
}
//should not come to this
return "a";
}

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
當(dāng)該方法要求您返回字符串時(shí),您試圖返回字符。您希望在方法的開頭創(chuàng)建一個(gè)新字符串,并將字符串的下一個(gè)字符設(shè)置為該值,而不是返回newMsgor ,如下所示:letter
public String CaeserCipher(int shift, String message) {
String updated_message = "";
for (int i = 0; i < message.length(); i++) {
...
char newMsg = (char)ascii;
updated_message += newMsg;
...
updated_message += letter;
} // end for
return updated_message;
}

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的代碼無法按您的預(yù)期工作。循環(huán)的第一次迭代for
將始終退出becausereturn
語句。還有冗余變量和強(qiáng)制轉(zhuǎn)換。即使像IntelliJ IDEA Community這樣的免費(fèi) Java IDE也會(huì)突出顯示這些問題,因此請(qǐng)考慮安裝一個(gè)。
您想要做的是使用 a 構(gòu)建結(jié)果StringBuilder
并在循環(huán)完成后返回它:
public static String caesarCipher(int shift, String message) {
? ? StringBuilder builder = new StringBuilder();
? ? for (int i = 0; i < message.length(); i++) {
? ? ? ? char letter = message.charAt(i);
? ? ? ? if (Character.isUpperCase(letter)) {
? ? ? ? ? ? char shiftLetter = (char) (letter + shift);
? ? ? ? ? ? builder.append(shiftLetter);
? ? ? ? }
? ? }
? ? return builder.toString();
}
添加回答
舉報(bào)