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

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

    } 

}
相关推荐
无尽的大道2 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
爱吃生蚝的于勒6 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
小鑫记得努力11 分钟前
Java类和对象(下篇)
java
binishuaio15 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE17 分钟前
【Java SE】StringBuffer
java·开发语言
老友@17 分钟前
aspose如何获取PPT放映页“切换”的“持续时间”值
java·powerpoint·aspose
就是有点傻21 分钟前
WPF中的依赖属性
开发语言·wpf
洋24030 分钟前
C语言常用标准库函数
c语言·开发语言
进击的六角龙31 分钟前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
wrx繁星点点32 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式