下列程序是整数除法计算的程序,要求在出现异常时,能抛出异常信息。 考虑两种异常: (1)输入非数字除数 (2)输入除法分母为零 该程序运行的三种结果状态如下: (1)输入两个合法整数 (2)输入非数字除数 (3)输

admin2009-12-22  41

问题 下列程序是整数除法计算的程序,要求在出现异常时,能抛出异常信息。
   考虑两种异常:
   (1)输入非数字除数
   (2)输入除法分母为零
   该程序运行的三种结果状态如下:
   (1)输入两个合法整数
   (2)输入非数字除数
   (3)输入除数为零
   请将程序填写完整。
   注意:不改动程序结构,不得增行或删行。
   import java.awt.event.*;
   public class ex3 extends ______implements ActionListener
   {
      private JTextField input1,input2, output;
      private int number1,number2;
      private double result;
      public ex3()
      {
      ______("示范异常");
      Container c=getContentPane();
      c.setLayout(new GridLayout(3,2));
      c.add(new JLabe1("输入分子",SwingConstants.RIGHT));
      input1=new JTextField(8);
      c.add(input1);
      c.add(new JLabe1("输入分母和回车",SwingConstants.RIGHT));
      input2=new JTextField(8);
      c.add(input2);
      input2.addActionListener(this);
      c.add(new JLabe1(”计算结果”,SwingConstants.RIGHT));
      output=new JTextField();
      c.add(output);
      setSize(400,100);
      show();
   }
   public void actionPerformed(ActionEvent e)
   {
      DecimalFormat precision3=new DecimalFormat("0.000");
      output.setText("");//空的JTextField输出
      try{
         number1=Integer.parseInt(input1.getText());
         number2=Integer.parseInt(input2.getText());
         result=quotient(number1,number2);
         ______;
      }
      catch (NumberFormatException nfe)
      {
         ______(this,"你必须输入两个整数","非法数字格式",
         JOptionPane.ERROR_MESSAGE);
      }
      catch (Exception dbz)
      {
         ______(this,"除法异常","除数为零",
         JOptionPane.ERROR_MESSAGE);
      }
   }
   //定义求商的方法,如遇除数为零时,能抛出异常。
   public double quotient(int numerator,int denominator)
   throws Exception
   {
         if(denominator= =0)
         throw new Exception();
         return(double) numerator/denominator;
   }
   public static void main(String args[])
   {
         Java3 app=new Java3();
         app.addWindowListener(
            new WindowAdapter(){
               public void windowClosing(WindowEvent e)
               {
                  e.getWindow().dispose();
                  System.exit(0);
               }
            }
         );
      }
   }

选项

答案JFrame Super output.setText(precision3.format(result)); JOptionPane.showMessageDialog JOptionPane.showMessageDialog

解析 本题综合考查类的继承、图形用户界面和数据类型转换。第1空应填写JFrame。通过前面的关键字extends,我们很明确地知道这里应该填写一个类的名称。从下面的程序中,我们发现使用了Container以及JTextField,并且Container调用了getContentPane方法,所以这里应该继承的是JFrame类。第2空应填写super。既然本类继承了JFrame类,那么我们显示一个名为“示范异常”的JFrame类,只需要调用super关键字。第3空应填写output.setText(precision3.format(result));。在程序的这一步,我们需要在文本框中显示信息,所以要调用文本框output的setText方法。但是,我们从程序的上一个步骤得到的结果result是一个double类型的数据,所以要进行数据转换,在这里,我们涉及到了DecimalFormat类,它是NumberFormat的一个子类,可以提供格式化输出数据类型的功能。DecimalFormat类的format方法可以返回字符串类型的数据。第四空和第五空都应填写JOptionPane.showMessageDialog。显示信息对话框调用JOptionPane的showMessageDialog方法。
转载请注明原文地址:https://kaotiyun.com/show/6Snp777K
0

最新回复(0)