⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 一些Java的小的应用程序
💻 JAVA
字号:

/**线性计算器
  Simple line-oriented calculator program. The class
 can also be used to create other calculator programs.
*/
public class Calculator
{
    private double result;
    private double memory;
    private double precision = 0.0001;
    //Numbers this close to zero are treated as if equal to zero.


    public static void main(String[] args)
    {
        Calculator clerk = new Calculator( );

        try
        {
            System.out.println("Calculator is on.");
            System.out.print("Format of each line: ");
            System.out.println("operator number");
            System.out.println("For example: + 3");
            System.out.println("To end, enter the letter e.");
            System.out.println("To clear,enter the letter c.");
            System.out.println("To save in memory,enter the letter m");
            System.out.println("To recall the memory,enter the letter r");
            clerk.doCalculation( );
        }
        catch(UnknownOpException e)
        {
            clerk.handleUnknownOpException(e);
        }
        catch(DivideByZeroException e)
        {
            clerk.handleDivideByZeroException(e);
        }

        System.out.println("The final result is "
                                  + clerk.resultValue( ));
        System.out.println("Calculator program ending.");
    }


    public Calculator( )
    {
        result = 0;
    }


    public void reset( )
    {
        result = 0;
    }

    public void setResult(double newResult)
    {
        result = newResult;
    }

     public double resultValue( )
    {
        return result;
    }public void  saveInMemory(double d){
    	memory=d;
    	System.out.println("result saved in memory");
    }public void recallMemory(){
    	System.out.println("memory recall\nmemory value ="+memory);
    	
    }public void clear(){
    	result=0;
    	System.out.println("result = "+result);
    }

    /**
     The heart of a calculator. This does not give
     instructions. Input errors throw exceptions.
    */
    public void doCalculation( ) throws DivideByZeroException,
                                       UnknownOpException
    {
        char nextOp;
        double nextNumber;
        boolean done = false;
        result = 0;
        System.out.println("result = " + result);
        while (! done)
        {
            nextOp = SavitchIn.readNonwhiteChar( );
            if ((nextOp == 'e') || (nextOp == 'E'))
            	 done = true;
            else if((nextOp == 'c') || (nextOp == 'C'))
            	clear();
            else if((nextOp == 'm') || (nextOp == 'M'))
            	saveInMemory(result);
            else if((nextOp == 'r') || (nextOp == 'R'))
            	recallMemory();
            else
            {
               nextNumber = SavitchIn.readLineDouble( );
               System.out.print(result);
               result = evaluate(nextOp, result, nextNumber);
                System.out.println(nextOp + " "
                               + nextNumber + " = " + result);
                System.out.println("updated result = " + result);
            }
        }
    }

    /**
     Returns n1 op n2,
     provided op is one of '+', '-', '*',or '/'.
     Any other value of op throws UnknownOpException.
    */
    public double evaluate(char op, double n1, double n2)
              throws DivideByZeroException, UnknownOpException
    {
        double answer;
        switch (op)
        {
            case '+':
                answer = n1 + n2;
                break;
            case '-':
                answer = n1 - n2;
                break;
            case '*':
                answer = n1 * n2;
                break;
            case '/':
                if ( Math.abs(n2)<precision)
                    throw new DivideByZeroException( );
                answer = n1/n2;
                break;
            default:
                throw new UnknownOpException(op);
        }

        return answer;
   }

 public void handleDivideByZeroException(DivideByZeroException e)
    {
        System.out.println("Dividing by zero.");
        System.out.println("Program aborted");
        System.exit(0);
    }

    public void handleUnknownOpException(UnknownOpException e)
    {
        System.out.println(e.getMessage( ));
        System.out.println("Try again from the beginning:");

        try
        {
            System.out.print("Format of each line: ");
            System.out.println("operator number");
            System.out.println("For example: +3");
            System.out.println("To end, enter the letter e.");
            System.out.println("To clear,enter the letter c.");
            System.out.println("To save in memory,enter the letter m");
            System.out.println("To recall the memory,enter the letter r");
            doCalculation( );
        }

        catch(UnknownOpException e2)
        {
            System.out.println(e2.getMessage( ));
            System.out.println("Try again at some other time.");
            System.out.println("Program ending.");
            System.exit(0);
        }

        catch(DivideByZeroException e3)
        {
            handleDivideByZeroException(e3);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -