第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何修復(fù)凱撒密碼程序中的“char無法轉(zhuǎn)換為java.lang.String”

如何修復(fù)凱撒密碼程序中的“char無法轉(zhuǎn)換為java.lang.String”

心有法竹 2024-01-28 16:34:48
我只是java的初學(xué)者,我正在嘗試解決codingbat“Ceaser Cipher”問題。問題是“開發(fā)一種接受移位值和消息作為輸入的方法。移位值將不小于 -25 且不大于 25。消息中出現(xiàn)的任何非大寫字母的字符應(yīng)該被編碼為它本身?!?程序已經(jīng)應(yīng)用了消息和值。例如,如果消息為“ABCDE”且移位為 1,則應(yīng)打印“BCDEF”。每次我嘗試運(yùn)行我的代碼時(shí),都會(huì)收到“char無法轉(zhuǎn)換為java.lang.String line:9”錯(cuò)誤。有誰知道如何解決這一問題?public 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 newMsg;     }     else{      return letter;     }  }}
查看完整描述

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。CaesarCipherStringcharString


我相信這就是您所需要的:

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;

}


查看完整回答
反對(duì) 回復(fù) 2024-01-28
?
牧羊人nacy

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";

    }


查看完整回答
反對(duì) 回復(fù) 2024-01-28
?
幕布斯7119047

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;

}


查看完整回答
反對(duì) 回復(fù) 2024-01-28
?
阿晨1998

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();

}


查看完整回答
反對(duì) 回復(fù) 2024-01-28
  • 4 回答
  • 0 關(guān)注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)