Guten Tag,
ich brauche etwas Hilfe bei meinem Code. Ich erhalte folgenden Fehler, sobald ich folgende Buttonkombination habe: Operand, Operator, Operand, Operator, Operand, Operator
Mein Quellcode lautet wie folgt:
Ich hoffe, ihr wisst, wo der Fehler beim casten des Strings liegt. Ich finde ihn leider nicht. Ich vermute, dass es an der Methode rechne() liegt.
Danke schon einmal für eure Hilfe.
ich brauche etwas Hilfe bei meinem Code. Ich erhalte folgenden Fehler, sobald ich folgende Buttonkombination habe: Operand, Operator, Operand, Operator, Operand, Operator
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at TaschenrechnerModel.rechne(TaschenrechnerModel.java:36)
at TaschenrechnerModel.useoperator(TaschenrechnerModel.java:70)
at TaschenrechnerModel.actionPerformed(TaschenrechnerModel.java:128)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Mein Quellcode lautet wie folgt:
Java:
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import zentralabi.linear.Stack;
public class TaschenrechnerModel implements ActionListener{
private String operatorstand;
private int sizeoperanden = 0;
private int zwischenergebnis;
private String usedoperator;
public static void main(String[] args) {
TaschenrechnerModel objekt = new TaschenrechnerModel();
}
public TaschenrechnerModel(){
}
public void checkoperator(String operatora, Object operatorb){
if ((operatora == "*" || operatora == "/") && (operatorb == "*" || operatorb == "/")){
operatorstand = "Gleichwertig";
}
else if ((operatora == "-" || operatora == "+") && (operatorb == "*" || operatorb == "/")){
operatorstand = "Niedriger";
}
else if ((operatora == "*" || operatora == "/") && (operatorb == "+" || operatorb == "-")){
operatorstand = "Hoeher";
}
else if ((operatora == "-" || operatora == "+") && (operatorb == "-" || operatorb == "+")){
operatorstand = "Gleichwertig";
}
}
public void rechne(){
int operandaint = Integer.valueOf((String)TaschenrechnerUIJWindow.operanden.top());
TaschenrechnerUIJWindow.operanden.pop();
int operandbint = Integer.valueOf((String)TaschenrechnerUIJWindow.operanden.top());
TaschenrechnerUIJWindow.operanden.pop();
String operator = (String)TaschenrechnerUIJWindow.operatoren.top();
TaschenrechnerUIJWindow.operatoren.top();
if (operator == "*"){
zwischenergebnis = operandaint * operandbint;
}
else if (operator == "/"){
zwischenergebnis = operandaint / operandbint;
}
else if (operator == "+"){
zwischenergebnis = operandaint + operandbint;
}
else if (operator == "-"){
zwischenergebnis = operandaint - operandbint;
}
}
public void useoperator(String operator){
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+operator);
TaschenrechnerUIJWindow.operanden.push(TaschenrechnerUIJWindow.operandenstrings.toString());
sizeoperanden++; // Funktioniert noch nicht!!!
TaschenrechnerUIJWindow.operandenstrings.setLength(0);
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
TaschenrechnerUIJWindow.operatoren.push(operator);
}
else {
checkoperator(operator,TaschenrechnerUIJWindow.operatoren.top());
System.out.println(""+operatorstand);
if(operatorstand == "Hoeherwertig"){
TaschenrechnerUIJWindow.operatoren.push(operator);
}
else if (operatorstand == "Gleichwertig"){
if (sizeoperanden >=2){
rechne();
TaschenrechnerUIJWindow.operanden.push(zwischenergebnis);
}
}
}
}
public void actionPerformed(ActionEvent e) {
/*
* Operanden werden auf den Operandenstapel gelegt
*/
if (e.getSource()==TaschenrechnerUIJWindow.nine){
TaschenrechnerUIJWindow.operandenstrings.append(9);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+9);
}
else if (e.getSource()==TaschenrechnerUIJWindow.eight){
TaschenrechnerUIJWindow.operandenstrings.append(8);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+8);
}
else if (e.getSource()==TaschenrechnerUIJWindow.seven){
TaschenrechnerUIJWindow.operandenstrings.append(7);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+7);
}
else if (e.getSource()==TaschenrechnerUIJWindow.six){
TaschenrechnerUIJWindow.operandenstrings.append(6);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+6);
}
else if (e.getSource()==TaschenrechnerUIJWindow.five){
TaschenrechnerUIJWindow.operandenstrings.append(5);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+5);
}
else if (e.getSource()==TaschenrechnerUIJWindow.four){
TaschenrechnerUIJWindow.operandenstrings.append(4);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+4);
}
else if (e.getSource()==TaschenrechnerUIJWindow.three){
TaschenrechnerUIJWindow.operandenstrings.append(3);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+3);
}
else if (e.getSource()==TaschenrechnerUIJWindow.two){
TaschenrechnerUIJWindow.operandenstrings.append(2);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+2);
}
else if (e.getSource()==TaschenrechnerUIJWindow.one){
TaschenrechnerUIJWindow.operandenstrings.append(1);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+1);
}
else if (e.getSource()==TaschenrechnerUIJWindow.zero){
TaschenrechnerUIJWindow.operandenstrings.append(0);
TaschenrechnerUIJWindow.anzeige.setText(TaschenrechnerUIJWindow.anzeige.getText()+0);
}
/*
* Operatoren werden überprüft und je nach "Gewichtung" auf den Operatorenstapel gelegt
*/
if (e.getSource()==TaschenrechnerUIJWindow.mal){
usedoperator = "*";
useoperator(usedoperator);
}
else if (e.getSource()==TaschenrechnerUIJWindow.geteilt){
usedoperator = "/";
useoperator(usedoperator);
}
else if (e.getSource()==TaschenrechnerUIJWindow.plus){
usedoperator = "+";
useoperator(usedoperator);
}
else if (e.getSource()==TaschenrechnerUIJWindow.minus){
usedoperator = "-";
useoperator(usedoperator);
}
else if (e.getSource()==TaschenrechnerUIJWindow.comma){
usedoperator = "*";
}
else if (e.getSource()==TaschenrechnerUIJWindow.plusminus){
usedoperator = "*";
}
else if (e.getSource()==TaschenrechnerUIJWindow.MC){
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
}
else {
checkoperator("*",TaschenrechnerUIJWindow.operatoren.top());
}
}
else if (e.getSource()==TaschenrechnerUIJWindow.Mplus){
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
}
}
else if (e.getSource()==TaschenrechnerUIJWindow.Mminus){
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
}
}
else if (e.getSource()==TaschenrechnerUIJWindow.MR){
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
}
}
else if (e.getSource()==TaschenrechnerUIJWindow.C){
if (TaschenrechnerUIJWindow.operatoren.isEmpty()){
}
}
else if (e.getSource()==TaschenrechnerUIJWindow.giveresult){
System.out.println(TaschenrechnerUIJWindow.operanden.top());
System.out.println(TaschenrechnerUIJWindow.operatoren.top());
}
}
}
Ich hoffe, ihr wisst, wo der Fehler beim casten des Strings liegt. Ich finde ihn leider nicht. Ich vermute, dass es an der Methode rechne() liegt.
Danke schon einmal für eure Hilfe.
Zuletzt bearbeitet von einem Moderator: