我对如何执行诸如“5 + 10 * 2/5”之类的陈述感到有些困惑。我是JAVA的新手,并没有丝毫关于如何去做。任何想法?
我需要编写一个在参数中使用表达式的方法。的eval( “6 * 3 + 2”);所以它必须将它们作为一个字符串并将它们转换为双重
答案 0 :(得分:0)
如果我们可以假设每个标记都以空格分隔,并且它是non-Polish notation,这就足够了:
Queue<Integer> numerals = new Queue<Integer>();
Queue<String> operators = new Queue<String>();
String[] tokens = input.split(" ");
int numeralIndex = 0;
for(String token:tokens)
{
if(numeralIndex %2 == 0)
{
numerals.enqueue(Integer.parseInt(token));
} else{
operators.enqueue(token);
}
numeralIndex++;
}
现在你有了令牌,你需要将它们从队列中删除以重新组装你的初始计算。您还需要符号列表,以便正确绑定语句:
int runningTotal = 0;
if(operator.equals("+")
{
runningTotal += (previous+current);
}else if(operator.equals("-")
{
runningTotal-=(previous-current);
} //etc
我将剩下的作为你的家庭作业的练习。
答案 1 :(得分:-3)
没有得到你想要的东西,但试试这个
int result = 0;
int val_a = 5;
int val_b = 10;
int val_c = 2;
现在打印结果;
int result =(你的计算在这里);
systm.out.println(“result =”+ result);