我要瘋了......我非常接近讓這段代碼以我想要的方式工作,我無法想象它。我正試圖解決ex的後綴方程。 3 2 +,這等於5.當我在例子 「3 2 +」的主要方法,它工作正常,但只要我輸入第3位像「3 2 + 2 *」(等於10),我得到一個arrayoutofboundserror關聯到number2 = s.pop(),您將在下面的代碼中看到。任何幫助是極大的讚賞。使用堆棧進行Postfix評估。
繼承人的後綴meethod:
public int PostfixEvaluate(String e){
int number1;
int number2;
int result=0;
String[] tokens = e.split(" ");
for(int j = 0; j < tokens.length; j++){
String token = tokens[j];
if (!"+".equals(token) && !"*".equals(token) && !"-".equals(token) && !"/".equals(token)) {
s.push(Integer.parseInt(token));
} else {
String Operator = tokens[j];
number1 = s.pop();
number2 = s.pop();
if (Operator.equals("/")){
result = number1/number2;}
else if(Operator.equals("*")){
result = number1 * number2;}
else if(Operator.equals("+")){
result = number1 + number2;}
else if(Operator.equals("-")){
result = number1 - number2;}
else System.out.println("Illeagal symbol");
}
s.push(result);
s.pop();
}
//s.pop();
System.out.println("Postfix Evauation = " + result);
return result;
}
public static void main(String[] args) {
Stacked st = new Stacked(100);
//String y = new String("((z * j)/(b * 8) ^2");
String x = new String("2 2 2 * +");
TestingClass clas = new TestingClass(st);
//clas.test(y);
clas.PostfixEvaluate(x);
}
}
這是怎麼回事?「3 2 + 2 *」 - 等於10 –