gpt4 book ai didi

java - 后缀计算器 Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:20 25 4
gpt4 key购买 nike

好的,所以我必须从文件中读入后缀表达式。后缀表达式必须有空格来分隔每个运算符或操作数。到目前为止,我所拥有的只有在输入文件中的运算符或操作数之间没有空格时才有效。 (即如果文件有 12+,我得到的结果是 3。)为了做到这一点,我认为我需要标记输入,但我不确定如何。这是我到目前为止所拥有的。感谢您的任何回复。

import java.util.*;
import java.io.*;
public class PostfixCalc{
public static void main (String [] args) throws Exception {
File file = new File("in.txt");
Scanner sc = new Scanner(file);
String input = sc.next();
Stack<Integer> calc = new Stack<Integer>();
while(sc.hasNext()){
for(int i = 0; i < input.length(); i++){
char c = input.charAt(i);
int x = 0;
int y = 0;
int r = 0;
if(Character.isDigit(c)){
int t = Character.getNumericValue(c);
calc.push(t);
}
else if(c == '+'){
x = calc.pop();
y = calc.pop();
r = x+y;
calc.push(r);
}
else if(c == '-'){
x = calc.pop();
y = calc.pop();
r = x-y;
calc.push(r);
}
else if(c == '*'){
x = calc.pop();
y = calc.pop();
r = x*y;
calc.push(r);
}
else if(c == '/'){
x = calc.pop();
y = calc.pop();
r = x/y;
calc.push(r);
}
}
}
int a = calc.pop();
System.out.println(a);
}
}

最佳答案

有几处需要更改,您可以逐步完成。

  1. 声明您的 Stack 以包含 Integer 而不是 Character
  2. 在读取输入的代码中,依赖于 String 而不是 Character
  3. 使用 Integer.parseInt() 解析操作数。这会将 String 转换为 Integer。 (实际上,它将它们转换为 int,但在您的情况下,这种差异并不重要。)
  4. 使用 Scanner.useDelimiter() 将扫描器定界符设置为 \s+,这将匹配任意空白字符的序列。

当然还有无数其他方法可以处理您的输入,但我试图让您了解如何更改现有代码以执行它需要执行的操作。

关于java - 后缀计算器 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12269191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com