私はうんざりしています。私はこのコードを私が欲しいやり方で動作させるのにはとても近く、私はそれを理解できません。私はexの方程式を解くことを試みています。 3 2 +、これは5です。私が例えば "3 2 +"をmainmethodに置くとうまくいきますが、 "3 2 + 2 *"(10に等しい)のような3桁目を入力するとすぐに、配列outofboundserrorをnumber2 = s.pop()に戻します。以下のコードで説明します。どんな助けでも大歓迎です。スタックを使用したPostfixの評価。
HERESに接尾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 –