创建自己的日期错误异常类

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

实验步骤:

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

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

java 复制代码
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 异常。

java 复制代码
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);

    } 

}
相关推荐
fengfuyao9854 分钟前
基于MATLAB的GUI实现人脸检测、眼睛检测以及LBP直方图显示
开发语言·计算机视觉·matlab
★YUI★8 分钟前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
微小的xx11 分钟前
java + html 图片点击文字验证码
java·python·html
CHANG_THE_WORLD21 分钟前
# C++ 中的 `string_view` 和 `span`:现代安全视图指南
开发语言·c++
mask哥24 分钟前
详解flink java基础(一)
java·大数据·微服务·flink·实时计算·领域驱动
克拉克盖博41 分钟前
chapter03_Bean的实例化与策略模式
java·spring·策略模式
Franklin43 分钟前
Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小
开发语言·python·qt
DashVector1 小时前
如何通过Java SDK分组检索Doc
java·数据库·面试
郝学胜-神的一滴1 小时前
深入理解QFlags:Qt中的位标志管理工具
开发语言·c++·qt·程序人生
程序员清风1 小时前
跳表的原理和时间复杂度,为什么还需要字典结构配合?
java·后端·面试