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