要求设计一个程序,该程序让用户输入一个星期中的任意一天的数字1 7,然后输出该数字所对应的是星期几。但是当用户输入的数字不在 1 7 范围内时,程序应该给出信息“您输入的不是正确的星期数!1…7”

实验步骤:

(1)分析实验任务,尽管Java 中有ArithmeticException, NumberFormatException 等异常类,但

并没有这里想要的异常类,因此用户必须设计自己的异常类BadDataException 以处理上述情况。

class BadDataException extends RuntimeException {
public BadDataException() {
super();
} // end constructOr BadDataException
public BadDataException(String message) {
super(message);
} // end constructor BadDataException
} // end class BadDataException

同时还要设计一个主类BadDataDays 以抛出这个例外,该主类包含一个getDayName(int dayNumber)方法以根据输入值返回星期几,在这个方法中应该使用一个switch 语句来判断,并在switch 块的default 语句处Throw 抛出用户的BadDataException 异常。

import java.awt.*;                // Container, GridLayout

import java.awt.event.*;          // ActionListener

import javax.swing.*;

public class BadDataDays extends JFrame

      implements ActionListener

  {

    private JTextField dayNumberField, dayNameField;

    private int dayNumber;

    private String dayName;  

    public BadDataDays()

    {

      super( "数字转换星期  " ); //代码1   

      Container container = getContentPane();

      container.setLayout( new GridLayout( 2 , 2 ) );    

      container.add(

          new JLabel( "输入数字 ", SwingConstants.RIGHT ) );

       dayNumberField=new JTextField(10);  //代码2    // 创建一个JTextField控件 dayNumberField

      container.add( dayNumberField );

      dayNumberField.addActionListener( this );     

      container.add(new JLabel( "星期几 ", SwingConstants.RIGHT ) );

      dayNameField = new JTextField( 10 );

      container.add(dayNameField); //代码3    // 将控件dayNameField 加入到容器中

      this.setSize(425, 100); //代码4   // 设置窗口的大小为 (425,100)

      setVisible( true );

    }     

    public void actionPerformed( ActionEvent event )

    {

      dayNameField.setText( "" );       

        try

         {

          dayNumber = Integer.parseInt( dayNumberField.getText() );

          dayName = getDayName(dayNumber);

          dayNameField.setText(dayName); //代码5  // 在控件dayNameField中输出结果 

         }

          catch (BadDataException ex)

         {

             JOptionPane.showMessageDialog(

            BadDataDays.this, ex.toString(), "无效日期", JOptionPane.WARNING_MESSAGE );

         }

         catch (NumberFormatException ex)

         {

           System.out.println("I detected Exception " + ex.toString());                               

         }

    } 

    public String getDayName(int dayNumber) throws BadDataException

    {

         //  此处加入switch 语句块以根据输入值dayNumber 判断星期几,

             //     并在default处Throw抛出BadDataException异常

switch(dayNumber) {  //代码6

         case 1:return "星期一";

         case 2:return "星期二";

         case 3:return "星期三";

         case 4:return "星期四";

         case 5:return "星期五";

         case 6:return "星期六";

         case 7:return "星期日";

         default:throw new BadDataException("输入错误!");

         }

    }

    public static void main( String args[] )

    {

      BadDataDays  application = new BadDataDays();

      application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    } 

}
10-04 20:04