-1

我对如何执行诸如“5 + 10 * 2 / 5”之类的语句有些困惑。我是 JAVA 的新手,对如何去做一无所知。有任何想法吗?

我需要编写一个采用参数表达式的方法。eval("6*3+2"); 所以它必须将它们作为字符串接收并将它们转换为双精度

4

2 回答 2

0

如果我们可以假设每个标记都是空格分隔的并且它是非波兰符号,那么这就足够了:

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

我会把剩下的留作你的家庭作业练习。

于 2013-05-23T02:16:48.343 回答
-3

did not get what you want exactly, but try this

int result = 0;

int val_a=5;

int val_b=10;

int val_c=2;

now to print the result;

int result = (your calculation here);

systm.out.println("result = "+result);

于 2013-05-23T02:36:29.793 回答