为了账号安全,请及时绑定邮箱和手机立即绑定

将 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 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信