String to Expression? calculator app question
I am trying to write a "simple" gui calculator program using BreezyGUI and I have run into some difficulty...I run into a problem when I want to evaluate the string expression that my switch statement creates..I've tried to find some sort of conversion method so far have been unsuccessful...So I guess my questions are:
Do I need to write (or better is it possible to write) a method that converts a string expression such as "1+2/3" into something that can be evaluated?
Or would it be better to scrap it and find a whole new algorithm?
Here is my code that I have so far..
Code:
/*My first Calculator app with java*/
import java.io.*;
import java.awt.*;
import BreezyGUI.*;
public class SimpleCalculator extends GBFrame {
DoubleField displayField = addDoubleField(0,2,3,2,1);
Button cButton = addButton("C",2,1,1,1);
Button dotButton = addButton(".",6,2,1,1);
Button oneButton = addButton("1",5,1,1,1);
Button twoButton = addButton("2",5,2,1,1);
Button threeButton = addButton("3",5,3,1,1);
Button fourButton = addButton("4",4,1,1,1);
Button fiveButton = addButton("5",4,2,1,1);
Button sixButton = addButton("6",4,3,1,1);
Button sevenButton = addButton("7",3,1,1,1);
Button eightButton = addButton("8",3,2,1,1);
Button nineButton = addButton("9",3,3,1,1);
Button zeroButton = addButton("0",6,1,1,1);
Button plusButton = addButton("+",4,4,1,1);
Button minusButton = addButton("-",5,4,1,1);
Button timesButton = addButton("*",3,4,1,1);
Button divideButton = addButton("/",6,4,1,1);
Button modButton = addButton("%",2,2,1,1);
Button equalsButton = addButton("=",6,3,1,1);
public void buttonClicked(Button buttonObject) {
String evalString = "";
while (buttonObject != cButton)
switch (buttonObject) {
case oneButton: {
evalString = evalString + "1";
displayField.setNumber(1);
}
case twoButton: {
evalString = evalString + "2";
displayField.setNumber(2);
}
case threeButton: {
evalString = evalString + "3";
displayField.setNumber(3);
}
case fourButton: {
evalString = evalString + "4";
displayField.setNumber(4);
}
case fiveButton: {
evalString = evalString + "5";
displayField.setNumber(5);
}
case sixButton: {
evalString = evalString + "6";
displayField.setNumber(6);
}
case sevenButton: {
evalString = evalString + "7";
displayField.setNumber(7);
}
case eightButton: {
evalString = evalString + "8";
displayField.setNumber(8);
}
case nineButton: {
evalString = evalString + "9";
displayField.setNumber(9);
}
case zeroButton: {
evalString = evalString + "0";
displayField.setNumber(0);
}
case dotButton: { evalString = evalString + ".";
}
case plusButton: { evalString = evalString + "+";
}
case minusButton: { evalString = evalString + "-";
}
case timesButton: { evalString = evalString + "*";
}
case divideButton: { evalString = evalString + "/";
}
case equalsButton: { /*Evaluate string expression somehow;
displayField.seeNumber(Evaluated expression);
break;*/
}
}
if (buttonObject == cButton) {
evalString = "";
displayField.setNumber(0);
}
}
public static void main(String[] args){
Frame frm = new SimpleCalculator();
frm.setSize(200,200);
frm.setVisible(true);
}
}