Monday, January 3, 2011

caculator with java

public class ArithmeticAddition extends ArithmeticExpression {

    public double Evaluate(double dblFValue,double dblSValue){
        return dblFValue+dblSValue;
    }
}

public class ArithmeticDivision extends ArithmeticExpression {


    public double Evaluate(double dblFValue, double dblSValue) {
     if (dblSValue != 0)
        return dblFValue/dblSValue;
     else
         return 0;
    }

}

public abstract class ArithmeticExpression {

    ArithmeticExpression(){}
    public ArithmeticExpression(double dblFValue,double dblSValue) {

    }


    private double _dblValue;

    public double getValue(){
        return this._dblValue;
    }
    public void setValue(double dblValue){
        this._dblValue= dblValue;
    }

    public abstract double Evaluate(double dblFValue,double dblSValue);

    public void Display(String expression){
        System.out.println("Expression :\t"+expression);
    }

}

public class ArithmeticMultiplication extends ArithmeticExpression{


    public double Evaluate(double dblFValue, double dblSValue) {
       return dblFValue*dblSValue;
    }

}

public class ArithmeticSubstraction extends ArithmeticExpression {


    public double Evaluate(double dblFValue, double dblSValue) {
      return dblFValue- dblSValue;
    }


}

import java.util.Scanner;
public class Calculator {
    public static void main(String[] args) {

        Scanner scnRead =new  Scanner (System.in);
        System.out.println("Enter :");
        String strExpression = scnRead.nextLine();       
        int ParseExpression = new Calculator().ParseExpression(strExpression);
        System.out.println(ParseExpression);
    }

private int ParseExpression(String expression)
        {
            int winningLevel = 0;
            byte winningTokenWeight = 0;
            int winningPos = 0;

            int level = 0;
            int pos = 0;

            for (char token :expression.toCharArray())
            {
                pos++;

                switch (token)
                {
                    case '(':
                        level++;
                        break;
                    case ')':
                        level--;
                        break;
                }

                if (level <= winningLevel)
                {
                    if (OperatorWeight(token) > winningTokenWeight)
                    {
                        winningLevel = level;
                        winningTokenWeight = OperatorWeight(token);
                        winningPos = pos;
                    }
                }
            }
            return winningPos;
        }
        private byte OperatorWeight(char value)
        {
            switch (value)
            {
                case '+':
                case '-':
                    return 3;
                case '*':
                    return 2;
                case '/':
                    return 1;
                default:
                    return 0;
            }
        }
    }

No comments:

Post a Comment