/*
* Code ist nicht vollständig (GUI etc. fehlt)
*
*/
double operand1;
double operand2;
int stringIndex = 0;
String ausgabeValue = "";
String op1 = "";
String op2 = "";
//ausgabe = jTextField
char operation = 'x';
private void resultButtonActionPerformed(java.awt.event.ActionEvent evt) {
while(true) {
ausgabeValue = ausgabe.getText();
/*
* Behandelt den Fall wenn Vorzeichen im Ausdruck sind
*/
if(ausgabeValue.charAt(stringIndex)=='-' || ausgabeValue.charAt(stringIndex)=='+' ) {
op1+=ausgabeValue.charAt(stringIndex);
stringIndex++;
}
/*
* Behandelt den Fall wenn keine Operation im Ausdruck ist (Fehlermeldung)
*/
if(!ausgabeValue.contains("+") & !ausgabeValue.contains("-") & !ausgabeValue.contains("*") & !ausgabeValue.contains("/")) {
JOptionPane.showMessageDialog(this, "Fehlerhafter Ausdruck!","Fehler", JOptionPane.ERROR_MESSAGE);
ausgabe.setText(null);
ausgabeValue = null;
break;
}
/*
* Zerlegt den String in Operand 1 (=String)
*/
while(ausgabeValue.charAt(stringIndex)!='+' & ausgabeValue.charAt(stringIndex)!='-' & ausgabeValue.charAt(stringIndex)!='*' & ausgabeValue.charAt(stringIndex)!='/' ) {
op1+=ausgabeValue.charAt(stringIndex);
stringIndex++;
}
/*
* Umwandlung von Op1 (=String) zu Operand1 (=double)
*/
try {
operand1 = Double.parseDouble(op1);
} catch (java.lang.NumberFormatException op1) {
JOptionPane.showMessageDialog(this, "Fehlerhafter Ausdruck!","Fehler", JOptionPane.ERROR_MESSAGE);
ausgabe.setText(null);
ausgabeValue = null;
break;
}
operation = ausgabeValue.charAt(stringIndex);
stringIndex++;
/*
* Übermittelt den restlichen String nach Op1 (=String)
*/
for(;stringIndex < ausgabeValue.length(); stringIndex++) {
op2 += ausgabeValue.charAt(stringIndex);
}
/*
* Umwandlung von Op2 (=String) zu Operand2 (=double)
*/
try {
operand2 = Double.parseDouble(op2);
} catch (java.lang.NumberFormatException op2) {
JOptionPane.showMessageDialog(this, "Fehlerhafter Ausdruck!","Fehler", JOptionPane.ERROR_MESSAGE);
ausgabe.setText(null);
ausgabeValue = null;
break;
}
/*
* Entscheidung welche Rechenoperation ausgeführt wird
*/
switch(operation) {
case '+':
ausgabe.setText(String.valueOf(operand1+operand2);
break;
case '-':
ausgabe.setText(String.valueOf(operand1-operand2));
break;
case '*':
ausgabe.setText(String.valueOf(operand1*operand2));
break;
case '/':
if(operand2!=0) {
ausgabe.setText(String.valueOf(operand1/operand2));
break;
}
else {
JOptionPane.showMessageDialog(this, "Durch 0 darf nicht dividiert werden!","Fehler", JOptionPane.ERROR_MESSAGE);
break; }
default:
break;
}
break;
}
stringIndex = 0;
ausgabeValue = ausgabe.getText();
op1 = "";
op2 = "";
}