Java课程设计报告-计算器

Java课程设计报告-计算器

第一部分 设计的内容要求

1.1 Windows自带计算器版面设计

1.2计算器计算功能算法实现

第二部分 设计思想

2.1根据图形用户界面设计方法设计计算器版面。

①容器类(窗口--Window类 ,面板--Panel类),框架类--Frame,Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。

②事件处理机制:监听器类WinClose(),actionPerformed()。

2.2计算器计算功能实现,即按钮监听器的实现

自定义变量: x,y为操作数,op为操作符。根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed(ActionEvent e)(计算功能算法)流程图。

第三部分 详细设计

3.1 calculator()函数(计算器版面设计)流程图:

3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:

第四部分 运行效果图

4.1运行初始图:

1

  4.2 计算功能测试图:

      -1+23.4

2

4.2 数学分组功能测试图:

        1

第五部分 心得与体会

5.1  Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。

5.2  根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。

5.3  本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。

第六部分 附录

 6.1计算器计算功能算法(按钮"="):   


  if(e.getSource()==b26) // "="

  {     

      str.setLength(0);       

      switch(op)

     {       

        case 0 :

         if(flag==1)

            textp.setText(String.valueOf(x+y));

         else

            {

               str.setLength(0);

               str.append(x+y);

               fun();

                         

             }

          break;        

        case 1 :

           if(flag==1)

                textp.setText(String.valueOf(x-y));

           else

            {

                str.setLength(0);

                str.append(x-y);

                fun();

             }

           break;

        case 2 :

            if(flag==1)

                 textp.setText(String.valueOf(x*y));

            else

            {

                 str.setLength(0);

                 str.append(x*y);

                 fun();

             }

             break;       

          case 3 :

             if(y==0)

              {

                  textp.setText("除数不能为零");

                  str.setLength(0);       

                  y=0;

               }

              else

              {

                  if(flag==1)

                    textp.setText(String.valueOf(x/y));

                  else

                  {

                    str.setLength(0);

                    str.append(x/y);

                    fun();

                  }

               }

              break;       

          }       

      }

    6.2 fun()函数(数学分组功能)

   publicvoid fun()

    {

        flag=0;

        int t=0;

        StringBuffer temp;

        String sstr=str.toString();

        if(sstr.trim().indexOf("-")==1)

        {

           temp=new StringBuffer(str.substring(1));

           t=1;

        }

        else

           temp=new StringBuffer(str.substring(0));

        if(sstr.trim().indexOf(".")==-1)

        {

            int j=temp.length();

            for(int i=j;i>3;)

            {

               temp.insert(i-3,",");

               i=i-3;

            }

            if(t==0)

                textp.setText(temp.toString());

            else

                textp.setText('-'+temp.toString());

        }

        else

        {

           int i=sstr.indexOf('.');          

           StringBuffer s1=new StringBuffer(sstr.substring(0,i));            

           StringBuffer s2=new StringBuffer(sstr.substring(i+1));

           for(int j=s1.length();j>3;)

            {

               s1.insert(j-3,",");

               j=j-3;

            }

           if(t==0)

               textp.setText(s1.toString()+'.'+s2.toString());

           else

               textp.setText('-'+s1.toString()+'.'+s2.toString());

          

        }

}

 

第二篇:JAVA课程设计报告——计算器

Java课程设计报告 题 目: 计算器 院(系):xxx学院年级专业: xxx班 学生姓名: xxx 指导老师: xx老师 开始时间: 200x-xx-xx 完成时间: 200x-xx-xx 目 录1. 摘 要2. 概要设计 3. 详细设计4. 测试分析5. 参考文献一、摘 要本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。二、概要设计(1) 自定义类说明*********************************************************** 类名: This_number_too_big ** 作用: 自定义的异常类,用来处理计算结果溢出 ** 继承的父类: Exception类 ** 实现的接口: 没有 ***********************************************************class This_number_too_big extends Exception{}//自定义的一个结果溢出异常类*********************************************************** 类名: Jsp2003 ** 作用: 主类。 ** 继承的父类: Frame类 ** 实现的接口: ItemListener类,ActionListener类 * **********************************************************class Jsp2003 extends Frame implements ItemListener,ActionListener{ public int number=0,length=18;//number是用来记录输入的数字个数,//length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 public char mark='n'; //设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’public double data=0; //设置运算数据为零 public char ch; //用来临时存放所按按钮的第一个字符public boolean Refresh=false;//设置lab是否要在输入数据的时候刷新,初始为否主要方法说明:------------------------------------------------------------------------------------------------//用来处理按了运算符后的计算-public void js() throws This_number_too_big //指定由method抛出异常{if (mark=='n') //没有运算符{mark=ch; //,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}else //如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句{switch (mark) //根据运算符计算结果,并把结果保存到data{ case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;} lab.setText(Double.toString(data)); //显示运算结果mark=ch;//设置运算符为刚刚按下的运算符Refres

h=true;//则设置下一次输入的时候要刷新labnumber=lab.getText().length();//设置输入的字符个数// System.out.println(lab.getText());//用来调试用的if (data>Double.MAX_VALUE)//如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big(); }}}//end js() method----------------------------------------------------------------------------------------------------public void enter()//处理输入字符{if(Refresh==true) //如果已经设置了 运算符则在下一次输入数据的时候要把以前lab的内容清除掉{lab.setText("0"); number=0; Refresh=false;} if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1) //如果lab的内容为0则,lab的内容将被所输入的字符代替,//否则直接在lab的内容后面加上所输入的字符 {lab.setText(Character.toString(ch)); number++;}else if(number<length) {number++;lab.setText(lab.getText()+ch);} }//end enter() method--------------------------------------------------------------------------------------------------------//八进制或十六进制转换成十进制Ipublic String goto_10(String s,long l) //参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{ String str=s; //用来转换的字符串long j=l; //表示进制long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权char cha;//临时记录要转换的字符for(int i=1;i<=str.length();i++){ cha=str.charAt(str.length()-i); switch(cha) { case '1': lg=lg+1*jing;break;case '2': lg=lg+2*jing;break;case '3': lg=lg+3*jing;break;case '4': lg=lg+4*jing;break;case '5': lg=lg+5*jing;break;case '6': lg=lg+6*jing;break;case '7': lg=lg+7*jing;break;case '8': lg=lg+8*jing;break;case '9': lg=lg+9*jing;break;case 'A': lg=lg+10*jing;break;case 'B': lg=lg+11*jing;break;case 'C': lg=lg+12*jing;break;case 'D': lg=lg+13*jing;break;case 'E': lg=lg+14*jing;break;case 'F': lg=lg+15*jing;break;}jing*=j; //位权升一级,为下次使用做好准备}return Long.toString(lg); }//end String goto_10() method}(2)程序流程图三、详细设计import java.awt.*;import java.awt.event.*;class This_number_too_big extends Exception{}//自定义的一个结果溢出异常类class Jsp2003 extends Frame implements ItemListener,ActionListener {public Jsp2003() {addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();System.exit(0);}});}static Jsp2003 mainFrame = new Jsp2003();static Label lab=new Label("0");static Panel pnl1=new Panel(new GridLayout(4,3,3,3));static Panel pnl2=new Panel(new GridLayout(4,1,3,3));static Panel pnl3=new Panel(new GridLayout(1,2,3,3));static Panel pnl4=new Panel(new GridLayout(6,1,3,3));static Button bt9=new Button("9"); st

atic Button bt8=new Button("8");static Button bt7=new Button("7");static Button bt6=new Button("6");static Button bt5=new Button("5");static Button bt4=new Button("4");static Button bt3=new Button("3");static Button bt2=new Button("2");static Button bt1=new Button("1");static Button bt0=new Button("0");static Button btdot=new Button("."); static Button btequ=new Button("="); static Button btadd=new Button("+");static Button btsub=new Button("-");static Button btmul=new Button("*");static Button btdev=new Button("/");static Button btA=new Button("A");static Button btB=new Button("B");static Button btC=new Button("C");static Button btD=new Button("D");static Button btE=new Button("E");static Button btF=new Button("F");static Checkbox ckb8=new Checkbox("八进制");static Checkbox ckb10=new Checkbox("十进制");static Checkbox ckb16=new Checkbox("十六进制");static Button btc=new Button("clear");static Button btt=new Button("backspace");public int number=0,length=18;//number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 public char mark='n'; //设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’public double data=0; //设置运算数据为零 public char ch; //用来临时存放所按按钮的第一个字符public boolean Refresh=false;//设置lab是否要在输入数据的时候刷新,初始为否public static void main(String args[]) {System.out.println("Starting Jsp2003...");lab.setAlignment(Label.RIGHT);lab.setBackground(Color.lightGray);lab.setForeground(Color.BLUE);lab.setFont(new Font("Serief",Font.BOLD,18));lab.setBounds(14,33,216,40);mainFrame.add(lab);CheckboxGroup grp=new CheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14,75,55,25);ckb10.setBounds(69,75,55,25);ckb16.setBounds(124,75,65,25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(14,140,120,150);pnl2.setBounds(144,140,40,150);pnl3.setBounds(14,100,170,36);pnl4.setBounds(190,100,40,190);pnl1.add(bt7); pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(btequ);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE); pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4); mainFrame.setResizable(false);mainFrame.setLayout(null);mainFrame.setSize(240,300 );mainFrame.setTitle("

计算器");mainFrame.setVisible(true);ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFrame);ckb16.addItemListener(mainFrame);//把事件聆听者向各个组键注册bt1.addActionListener(mainFrame);bt2.addActionListener(mainFrame);bt3.addActionListener(mainFrame);bt4.addActionListener(mainFrame);bt5.addActionListener(mainFrame);bt6.addActionListener(mainFrame);bt7.addActionListener(mainFrame);bt8.addActionListener(mainFrame);bt9.addActionListener(mainFrame);bt0.addActionListener(mainFrame);btadd.addActionListener(mainFrame);btsub.addActionListener(mainFrame);btmul.addActionListener(mainFrame);btdev.addActionListener(mainFrame);btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);btdot.addActionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);}// end main() mothed //--------------------------------------------- //checkbox 事件的处理 public void itemStateChanged(ItemEvent e){ mark='n';Refresh=false;//规定当进制转换时以前输入的运算符失效if (ckb8.getState()==true) { btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(false);bt8.enable(false);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在八进制的情况下对有些按件的管理if(length==18) { lab.setText(goto10_8(lab.getText()));number=lab.getText().length();} if(length==14) { lab.setText(goto_10(lab.getText(),16L));lab.setText(goto10_8(lab.getText())); number=lab.getText().length(); }//将其他进制转换成八进制length=19;//在八进制下允许输入数字个数最多为19位}if(ckb10.getState()==true) { btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(true);bt8.enable(true);btdot.enable(true);btadd.enable(true);btmul.enable(true);btsub.enable(true);btdev.enable(true);btequ.enable(true);//在十进制的情况下对有些按件的管理if(length==19) { lab.setText(goto_10(lab.getText(),8L));number=lab.getText().length();}if(length==14) { lab.setText(goto_10(lab.getText(),16L));number=lab.getText().length();}//进制转换成十进制length=18;//在十进制下允许输入数字个数最多为18位}if(ckb16.getState()==true) { btA.enable(true);btB.enable(true);btC.enable(true);btD.enable(true);btE.enable(true);btF.enable(true);bt9.enable(true);bt8.enable(true);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);//在十六进制的情况下对有些按件的管

理if(length==18) { lab.setText(goto10_16(lab.getText()));number=lab.getText().length();}if(length==19) { lab.setText(goto_10(lab.getText(),8L));lab.setText(goto10_16(lab.getText())); number=lab.getText().length();} //将其他进制转换成十六进制length=14;//在十六进制下允许输入数字个数最多为14位 } }//end itemStateChanged(ItemEvent e) method//------------------------------------------------------------ //按钮事件的处理public void actionPerformed(ActionEvent m){Button btn=(Button) m.getSource();ch=btn.getLabel().charAt(0);switch (ch){ case 'c': {lab.setText("0"); number=0; mark='n'; Refresh=false;}break;//初始化case '1': enter(); break;case '2': enter(); break; case '3': enter(); break;case '4': enter(); break;case '5': enter(); break;case '6': enter(); break;case '7': enter(); break;case '8': enter(); break;case '9': enter(); break;case '0': {if(Refresh==true) { lab.setText("0"); number=0; Refresh=false; }if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1) break;if(number<length) {number++;lab.setText(lab.getText()+ch);} else break;} break;case 'A': enter(); break;case 'B': enter(); break;case 'C': enter(); break;case 'D': enter(); break;case 'E': enter(); break;case 'F': enter(); break;case '.': {if(Refresh==true) {lab.setText("0"); number=0; Refresh=false;} if(lab.getText().indexOf('.')== -1){number++;lab.setText(lab.getText()+ch);} else break; }break;case 'b': {if(number==0) break;else {if(--number==0) {lab.setText("0"); number=0;} else{if (number!=1) lab.setText(lab.getText().substring(0,number));elselab.setText(Character.toString(lab.getText().charAt(0)));}}}break;case '+': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '-': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '*': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '/': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键case '=': try{ js();}catch(This_number_too_big e){lab.setText("0"); number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} break; //如果出现异常则初始化效果如同clear键}}//end actionPerformed(ActionEvent e) method//八进制或十六进制转换成十进制I//-------------------------------------Infinitypubl

ic String goto_10(String s,long l) //参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{ String str=s; //用来转换的字符串long j=l; //表示进制long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权char cha;//临时记录要转换的字符for(int i=1;i<=str.length();i++){ cha=str.charAt(str.length()-i); switch(cha) { case '1': lg=lg+1*jing;break;case '2': lg=lg+2*jing;break;case '3': lg=lg+3*jing;break;case '4': lg=lg+4*jing;break;case '5': lg=lg+5*jing;break;case '6': lg=lg+6*jing;break;case '7': lg=lg+7*jing;break;case '8': lg=lg+8*jing;break;case '9': lg=lg+9*jing;break;case 'A': lg=lg+10*jing;break;case 'B': lg=lg+11*jing;break;case 'C': lg=lg+12*jing;break;case 'D': lg=lg+13*jing;break;case 'E': lg=lg+14*jing;break;case 'F': lg=lg+15*jing;break;}jing*=j; //位权升一级,为下次使用做好准备}return Long.toString(lg); }//end String goto_10() method//十进制转换成十六进制 //-------------------------------------public String goto10_16(String s)//参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;{ String str=s; //用来转换的字符串String st=new String();//用来记录16进制值的字符串long ch; //每次取余有的值int k; //将每次取余有的值转换成整形,用来选择转换的16进制字符long lg;//用来转换的10进制数if(str.charAt(0)=='-') //如果有负号则出去负号str=str.substring(1,str.length()-1);if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数点和E后面的数str=str.charAt(0)+str.substring(2,str.indexOf('E'));if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.'));lg=Long.parseLong(str);//将简化的字符串转化为长整形给lgwhile (lg>=16){ ch=lg%16;k=(int)ch;switch (k){case 10: st="A"+st;break;case 11: st="B"+st;break;case 12: st="C"+st;break;case 13: st="D"+st;break;case 14: st="E"+st;break;case 15: st="F"+st;break;default: st=Long.toString(ch)+st;} lg=lg/16;}k=(int)lg;switch (k){case 10: st="A"+st;break;case 11: st="B"+st;break;case 12: st="C"+st;break;case 13: st="D"+st;break;case 14: st="E"+st;break;case 15: st="F"+st;break;default: st=Long.toString(lg)+st;}return st;}//end goto10_16() method//----------------------------------------------- //十进制转换成八进制?public String goto10_8(String s)//参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;{ String str=s;String st=new String();long j=8,ch;long lg;if(str.charAt(0)=='-') //如果有负号则出去负号str=str.substring(1,str.length()-1);if(str.indexOf('E')!= -1)//如果是科学计数值则出去小数

点和E后面的数str=str.charAt(0)+str.substring(2,str.indexOf('E'));if (str.indexOf('.')!= -1)//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.'));lg=Long.parseLong(str);while (lg>=j){ ch=lg%j;st=Long.toString(ch)+st;lg=lg/j;}st=Long.toString(lg)+st;return st;}//end goto10_8() method//--------------------------------//输入字符public void enter(){if(Refresh==true) //如果已经设置了 运算符则在下一次输入数据的时候要把以前lab的内容清除掉{lab.setText("0"); number=0; Refresh=false;} if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1) //如果lab的内容为0则,lab的内容将被所输入的字符代替,否则直接在lab的内容后面加上所输入的字符 {lab.setText(Character.toString(ch)); number++;}else if(number<length) {number++;lab.setText(lab.getText()+ch);} }//end enter() method //------------------------------------- //用来处理按了运算符后的计算-public void js() throws This_number_too_big //指定由method抛出异常{if (mark=='n') //没有运算符{mark=ch; //,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}else //如果采用的是连续运算(即没有使用‘=’号)则运行下面的语句{switch (mark) //根据运算符计算结果,并把结果保存到data{ case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;} lab.setText(Double.toString(data)); //显示运算结果mark=ch;//设置运算符为刚刚按下的运算符Refresh=true;//则设置下一次输入的时候要刷新labnumber=lab.getText().length();//设置输入的字符个数// System.out.println(lab.getText());//用来调试用的if (data>Double.MAX_VALUE) //如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big(); }}}//end js() method//--------------------------- //public void answer() throws This_number_too_big //指定由method抛出异常{if (mark=='n') {}else {switch (mark){case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;} lab.setText(Double.toString(data)); mark='n';}if (data>Double.MAX_VALUE) //如果data超过double类型的最大值则抛出自定义的一个异常类{throw new This_number_too_big();}Refresh=false;number=lab.getText().length();}//end answer() method//---------------------------}//end class Jsp20034. 测试分析(1)程序运行情况:程序正常的

响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。(2)程序异常处理: 当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big 类的异常对象,这个是我自定义的一个异常类它继承自Exception 类,然后使用try-catch去捕捉这个异常,异常的处理如下:try{ js();}catch(This_number_too_big e){lab.setText("0");number=0; mark='n'; Refresh=false; System.out.println("The number is too big");} //如果出现异常则初始化效果如同clear键五、参考文献

相关推荐