neo_rej
Legacy Member
Ik heb dus een stack, als ik er een element wil "uitpoppen" geeft mij dat dus een Object weer. maar ik heb dit nodig als een int.
Dit is mijn code:
Dus dit is de code waar ik het over heb:
Integer objectInteger = (Integer)s.pop();
argument1 = objectInteger.intValue();
ik kan perfect compileren, maar bij het runnen krijg ik een classCastException.
Iemand een id hoe je dit kunt verhelpen?
Grtz
Dit is mijn code:
Code:
import javax.swing.*;
import java.util.Stack;
public class BerekenPostFixTest
{
public static void main(String args[])
{
String a = JOptionPane.showInputDialog("Geef een postfix uitdruking in");
if(berekenPostFix(a)!=null)
{
JOptionPane.showMessageDialog(null, "De uitkomst van de uitdrukking is " + berekenPostFix(a));
}
}
public static String berekenPostFix(String input)
{
Stack s = new Stack();
char in[] = input.toCharArray();
char symbool;
int lengte = in.length;
int argument1 = 0;
int argument2 = 0;
String resultaat = "";
Integer tresultaat = 0;
for(int teller = 0; teller < in.length; teller++)
{
System.out.println(in[teller]);
symbool = in[teller];
if(symbool == '+' || symbool == '-' || symbool == '*' || symbool == '/')
{
if(s.isEmpty())
{
JOptionPane.showMessageDialog(null, "Fout: Illegale expressie\nEr zijn geen getallen in gegeven");
resultaat = "0";
return null;
}
else
{
Integer objectInteger = (Integer)s.pop();
argument1 = objectInteger.intValue();
}
if(s.isEmpty())
{
JOptionPane.showMessageDialog(null, "Fout: Illegale expressie\nEr is maar 1 getal ingegeven");
resultaat = "0";
return null;
}
else
{
Integer objectInteger = (Integer)s.pop();
argument2 = objectInteger.intValue();
}
if(symbool == '-')
{
tresultaat = (Integer)argument2-(Integer)argument1;
}
if(symbool == '+')
{
tresultaat = (Integer)argument2+(Integer)argument1;
}
if(symbool == '*')
{
tresultaat = (Integer)argument2*(Integer)argument1;
}
if(symbool == '+')
{
tresultaat = (Integer)argument2/(Integer)argument1;
}
s.push(tresultaat);
}
else
{
s.push(symbool);
}
}
if(!s.isEmpty())
{
Integer objectInteger = (Integer)s.pop();
tresultaat = objectInteger.intValue();
}
else
{
JOptionPane.showMessageDialog(null, "Fout: Illegale expressie");
resultaat = "0";
return null;
}
if(s.isEmpty())
{
resultaat += tresultaat;
return resultaat;
}
else
{
JOptionPane.showMessageDialog(null, "Fout: Illegale expressie");
resultaat = "0";
return null;
}
}
}
Dus dit is de code waar ik het over heb:
Integer objectInteger = (Integer)s.pop();
argument1 = objectInteger.intValue();
ik kan perfect compileren, maar bij het runnen krijg ik een classCastException.
Iemand een id hoe je dit kunt verhelpen?
Grtz
Maar goed om weten.