亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組索引外界例外羅馬數字到整數轉換器

數組索引外界例外羅馬數字到整數轉換器

慕虎7371278 2022-09-14 16:12:18
我必須編寫一個程序,將羅馬數字轉換為其相應的整數值,但我不斷收到java.lang.Array索引出界異常錯誤。每當我更改某些內容時,它就會輸出錯誤的值。有人可以讓我知道我哪里出錯了嗎?char n1[] = {'C', 'X', 'I', 'I', 'I'};int result = 0;for (int i = 0; i < n1.length; i++) {  char ch = n1[i];  char next_char = n1[i + 1];  if (ch == 'M') {    result += 1000;  } else if (ch == 'C') {    if (next_char == 'M') {      result += 900;      i++;    } else if (next_char == 'D') {      result += 400;      i++;    } else {      result += 100;    }  } else if (ch == 'D') {    result += 500;  } else if (ch == 'X') {    if (next_char == 'C') {      result += 90;      i++;    } else if (next_char == 'L') {      result += 40;      i++;    } else {      result += 10;    }  } else if (ch == 'L') {    result += 50;  } else if (ch == 'I') {    if (next_char == 'X') {      result += 9;      i++;    } else if (next_char == 'V') {      result += 4;      i++;    } else {      result++;    }  } else { // if (ch == 'V')    result += 5;  }}System.out.println("Roman Numeral: ");for (int j = 0; j < n1.length; j++){  System.out.print(n1[j]);}System.out.println();System.out.println("Number: ");System.out.println(result);
查看完整描述

3 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

其他人對原因的看法是正確的。我認為你可以設置(根據命名約定應該是)一個虛擬值,該值與羅馬數字中使用的任何字母都不匹配,以防沒有任何下一個字符:next_charnextChar


      char nextChar;

      if (i + 1 < n1.length) {

        nextChar = n1[i + 1];

      } else {

        nextChar = '\0';

      }

通過此更改,您的程序將打?。?/p>


Roman Numeral: 

CXIII

Number: 

113

維托爾SRG也是正確的,你的程序缺乏驗證,這是不好的。


查看完整回答
反對 回復 2022-09-14
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您的循環從 到 ,因此該行fori = 0i = n1.length - 1

char next_char = n1[i + 1];

將始終導致異常。ArrayIndexOutOfBoundsException

維基百科中,羅馬數字由最多三個獨立的組組成:

  1. 男,嗯,嗯;

  2. C, 中央, 中央, CD, D, DC, D, DCC, DCCC, DCCC, CM;

  3. X, XX, XXX, XL, L, LX, LXX, LXXX, XC;和

  4. 一、二、三、四、五、六、七、八、九。

我建議您單獨解析它們。


查看完整回答
反對 回復 2022-09-14
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

這會導致數組超出邊界 。您可以再次模擬 for 循環以檢查此索引

  char next_char = n1[i + 1];


查看完整回答
反對 回復 2022-09-14
  • 3 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號