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

要求设计一个程序,该程序让用户输入一个星期中的任意一天的数字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);

    } 

}
相关推荐
lntu_ling9 小时前
Python-基于Haversine公式计算两点距离
开发语言·python·gis算法
ShineWinsu15 小时前
对于C++:继承的解析—上
开发语言·数据结构·c++·算法·面试·笔试·继承
小付同学呀15 小时前
C语言学习(五)——输入/输出
c语言·开发语言·学习
码农阿豪15 小时前
Nacos 日志与 Raft 数据清理指南:如何安全释放磁盘空间
java·安全·nacos
梦幻精灵_cq15 小时前
学C之路:不可或缺的main()主函数框架(Learn-C 1st)
c语言·开发语言
直有两条腿15 小时前
【大模型】Langchain4j
java·langchain
love530love15 小时前
Scoop 完整迁移指南:从 C 盘到 D 盘的无缝切换
java·服务器·前端·人工智能·windows·scoop
消失的旧时光-194316 小时前
C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
java·开发语言·c++·并发
莫寒清16 小时前
ThreadLocal
java·面试
福大大架构师每日一题17 小时前
go-zero v1.10.0发布!全面支持Go 1.23、MCP SDK迁移、性能与稳定性双提升
开发语言·后端·golang