У меня есть проблема, связанной вычисления выражения постфикса с использованием стекаjava.lang.Float не может быть приведен к java.lang.String инфиксу к постфиксу
for(int i=0;i<postfix.length;i++){
System.out.println("iteration:"+(i+1));
if(postfix[i].equalsIgnoreCase("+") || postfix[i].equalsIgnoreCase("-")
|| postfix[i].equalsIgnoreCase("*") || postfix[i].equalsIgnoreCase("/")) {
num1 = Float.parseFloat((String)out.pop());
System.out.println("pop:"+num1);
num2 = Float.parseFloat((String)out.pop());
System.out.println("pop:"+num2);
if(postfix[i].equalsIgnoreCase("+")) {
temp = num2+num1;
out.push(temp);
System.out.println("push:"+temp);
}
else if(postfix[i].equalsIgnoreCase("-")) {
temp = num2-num1;
out.push((""+temp));
System.out.println("push:"+temp);
}
else if(postfix[i].equalsIgnoreCase("*")) {
temp = num2*num1;
out.push((""+temp));
System.out.println("push:"+temp);
}
else if(postfix[i].equalsIgnoreCase("/")) {
temp = num2/num1;
out.push((""+temp));
System.out.println("push:"+temp);
}
}
else{
System.out.println("push:"+postfix[i]);
out.push(postfix[i]);
}
}
код работает хорошо, если я только сделать операцию между двумя цифрами, например " 2 4 + « , но когда это становится как« 2 4 + 5 + », внезапно появляется ошибка. Я даже помещаю маркеры .. распечатки там, чтобы проверить поток моего кода ..thanks любая помощь?
Я хотел бы хранить 'Double' в стеке, а не использовать' String' или 'Float' –
« ошибка внезапно появляется », какая ошибка появляется где? –
@Peter Lawrey accrding netbeans. в строке 97 появляется ошибка, начинающаяся с строки: num2 = Float.parseFloat ((String) out.pop()); System.out.println ("pop:" + num2); Ошибка Исключение в потоке "main" java.lang.ClassCastException: java.lang.Float не может быть добавлено в java.lang.String –