发新话题
打印

JAVA初学者求助——计算器修改

/*
程序:netice
时间:2008-6-18
此计算器说明:
优点:
        判断了输入的是否为数字,可以连续使用!
        判断了写未知的输入错误
缺点:
        只能在DOS下运行
        只能2个数之间的简单的+-×/运算
        仅仅是为了演示,所以精度为float型
        
扩展:
        若想输入多个运算符也能实现,算法跟下边类似。
        剩下的自己搞定吧,偶还有面试题要做。。。。
        用了2小时,DOS下不怎么好调试。
*/

import java.io.*;                           //导入IO包
class Select
{                                           //输入数据流的类
        String inputStr;
        float fResult;
        //提示部分
        boolean tishi(String zi) throws IOException
        {
            String isGoonStr;
            BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
            System.out.print(zi);
            isGoonStr=c.readLine();
            if(isGoonStr.equals("1"))
                    return true;
            else
                     return false;
        }
        //计算机器主要算法
            boolean select(String zi) throws IOException
        {
            BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
            System.out.print(zi);
            inputStr=c.readLine();
            //下面开始计算输入的计算式
            
            String numberStr1="";
            String numberStr2="";
            String operatorStr=null;
            float numberF1,numberF2;
            boolean bNum1=true;//是否为第一个运算符
            //判断是否为0.1类似数字,第一个数字为0则下个符号应该为“.”
            if(inputStr.charAt(0)=='0')
            {
                    if(inputStr.charAt(1)!='.')
                    return false;
            }
            //依次给数字1、数字2、运算符,进行赋值
            for(int i=0;i<inputStr.length();i++)
            {
                    switch(inputStr.charAt(i))
                    {
                            case '1':case '2':case '3':case '4':case '5':case '6':
                            case '7':case '8':case '9':case '0':case '.':
                                    if(bNum1)
                                    {
                                            numberStr1+=inputStr.substring(i,i+1);
                                    }
                                    else
                                    {
                                            numberStr2+=inputStr.substring(i,i+1);
                                    }
                                    break;
                            case '+':case '-':case '*':case '/':
                                    operatorStr=inputStr.substring(i,i+1);
                                    bNum1=false;
                                    break;
                            default:
                                    return false;
                           
                    }
            }
            //捕获未知的错误
            try
            {
                    //把字符串转换成数字
                    numberF1=Float.parseFloat(numberStr1);
                    numberF2=Float.parseFloat(numberStr2);
                    //计算出结果
                    switch(operatorStr.charAt(0))
                    {
                            case '+':
                                fResult=numberF1+numberF2;
                                    break;
                            case '-':
                                fResult=numberF1-numberF2;
                                    break;
                            case '*':
                                fResult=numberF1*numberF2;
                                    break;
                            case '/':
                                //除数为0时候
                                if(numberF2==0)
                                {
                                            System.out.print("除数不能为零!");
                                        return false;
                                }
                                fResult=numberF1/numberF2;
                                    break;
                    }
            }
            catch(Exception e)
            {
                    return false;
            }
            
            //打印结果
            System.out.print("              "+numberStr1+operatorStr+numberStr2+"="+fResult);
            return true;
        }
}
class calculator
{
        //主函数
        public static void main(String[]args) throws IOException
        {
                System.out.println("欢迎使用刘冰计算机器!");
                System.out.println("请先阅读操作流程:");
                System.out.println("提示输入运算式后:如下输入 数字1+数字2 回车 \n");
                Select s=new Select();
                int isGoon=1;
                while(isGoon==1)
                {
                        if(!s.select("请输入运算式:"))
                        {
                                System.out.println("输入非法!");

                        }
                        if(!s.tishi("\n是否继续使用计算器?  1:是       其他键:否\n"))
                        {
                                isGoon=2;
                        }
                        
                }
        }
}

[ 本帖最后由 netice 于 2008-6-19 17:34 编辑 ]

TOP

发新话题