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

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

將 char 轉換為 int java 的問題

將 char 轉換為 int java 的問題

慕哥9229398 2021-11-11 14:06:23
我正在編寫一個采用中綴表達式并將其轉換為后綴的代碼。然后它采用后綴表達式并解決它。從中綴轉換為后綴工作正常,但由于某種原因,如果后綴表達式包含 2 位或更多,我的代碼無法解決后綴表達式。最初它會讀取 10 2 + 并返回 3,但是使用我當前的代碼,它會讀取 10 2 + 并吐出 540,所以我假設當我從 char 轉到 int 時,我得到的是 ASCII 代碼而不是實際值. 這是我的代碼的一部分,它嘗試讀取后綴字符串,確定它有什么數字,并將其放入堆棧以供以后解決:(注意我知道當前設置僅支持最多 3 位數字)LinkedStack<Integer> stack = new LinkedStack<Integer>();    for (int i = 0; i < str.length(); i++) {        if(Character.isDigit(str.charAt(i))) {            if(i+1 == str.length()) {                stack.push(Character.getNumericValue(str.charAt(i)));                break;            }            if(Character.isDigit(str.charAt(i+1))) {                char x = str.charAt(i);                char y = str.charAt(i+1);                int k = x * 10;                int m = k + y;                stack.push(m);                i++;            }            else if(Character.isDigit(str.charAt(i+1)) && Character.isDigit(str.charAt(i+2))){                char x = str.charAt(i);                char y = str.charAt(i+1);                char z = str.charAt(i+2);                int k = x * 100;                int w = y * 10;                int m = x + y + z;                stack.push(m);                              i++;                i++;            }            else{                stack.push(Character.getNumericValue(str.charAt(i)));            }任何反饋都會有所幫助。謝謝!
查看完整描述

2 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

我可以建議一個完全不同的解決方案

與 lambda 一行:


LinkedStack<Integer> stack = new LinkedStack<Integer>();

Stream.of( str.split( "\\D" ) ).forEach( s -> stack.push( Integer.parseInt( s ) ) );


查看完整回答
反對 回復 2021-11-11
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

我自己找到了一個解決方案:


因此,例如,如果 int 應該是 2 位數字(10-99)而不是,我將使用 if 語句:


 char x = str.charAt(i);

 char y = str.charAt(i+1);

 int k = x * 10;

 int m = k + y;

 stack.push(m);

 i++;

我發現這可以代替:


int k = Character.getNumericValue(str.charAt(i)) * 10;

int m = k + Character.getNumericValue(str.charAt(i+1));

stack.push(m);

i++;


查看完整回答
反對 回復 2021-11-11
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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