当前位置:文档之家› 第九章 Java异常处理练习

第九章 Java异常处理练习

第九章 Java异常处理练习
第九章 Java异常处理练习

第九章异常

在Java应用程序中,异常处理是保证程序正常、可靠运行的一个重要方面,在前边已经遇到了简单的异常处理。本章实验将主要针对程序中常用的异常的处理及异常的应用。

实验一:异常处理及应用

实验目的

(1). 了解异常的基本概念、异常的的产生和异常处理的过程。

(2). 基本掌握异常在应用程序中的应用。

实验要求

编写应用程序,在程序中对常见的异常进行捕捉并作相应的处理。

实验内容

实验示例9.1.1 在上一章的实验示例测试中,若没有输入答案或输入非数字字符,则在处理过程中会出现数据格式异常,修改实验示例创建的Exercises类,添加捕获并处理异常的程序代码。

实现该示例的步骤如下:

⑴简要分析

根据题意,首先需要确定会产生异常的程序段,然后使用try~catch结构进行捕捉和处理异常地处理。由于主要处理数据格式异常,它由输入时的错误引起,所以,在处理异常时,就是返回到输入处,重新输入数据。

⑵根据上述简要分析,给出如下修改后的参考程序代码:

/*这是一个小学生综合训练题测试的应用程序

*程序的名称:

*程序中捕捉处理数据格式异常(NumberFormatException)

*/

import .*;

import .*;

import .*;

public class Exercises extends StudentScreen implements ActionListener,KeyListener

{ int count = 0;

int n1=0,n2=0;

int total=0;

int right=0;

long timenum=0;

Random rand=new Random();

public Exercises(int total)

图9-2 实验示例9.1.2

屏幕界面

{ 、 =total; (""+(100)); (""+(100)); ("测试题目数:"+total+"道"); (false); quals("+")) x=n1+n2; else if().equals("-")) x=n1-n2; else if().equals("*")) x=n1*n2; else if().equals("/")) x=n1/n2; if(x==())) right++; } … catch(NumberFormatException e) { (null,"数据格式错误,请重新输入数据!!!"); (); return; } catch(Exception e1) { (null,()); return; } count++;

~ if(count==total) ;

public class TestExercises extends JFrame

{

TestExercises()

{

add(new Exercises(30)); -1a-1c 9.1.29.1.1;

import .*;

import .*;

public class Calculator extends JFrame implements

ActionListener

{ float f1=0;

float f2=0;

JLabel num1=new JLabel("");

Choice op=new Choice();

— JTextField num2=new JTextField(10);

JLabel result=new JLabel();

JButton ok = new JButton("下一个");

JButton next = new JButton("清零");

JButton exit = new JButton("退出");

JPanel jp1=new JPanel();

9-1a 选择测试题目数对话框 9-1b 答题屏幕界面

9-1c 异常信息对话框 9-1d 结果信息对话框

JPanel jp2=new JPanel();

public Calculator()

{

("简单计算器应用");

|

(new GridLayout(3,1));

(new JLabel("请选择运算并输入运算数:"));

("+");

("-");

("*");

("/");

(num1);

(op);

(num2);

(result);

(ok);

(next);

(exit);

(jp1);

(jp2);

(this); //委托监听对象

(new KeyPressListener()); //………

(new KeyPressListener());//………

(new KeyPressListener());//………

(this); //委托监听对象

%

(this);

();

(true);

;

();

}

/**********判断数据是否合法***********/

public boolean isNumber() throws DefException

{

try

·

{

f2=()); //获取运算数

}

catch(NumberFormatException e)

{

(null,"数据格式错误,请重新输入数据!!!");

();

return false;

}

catch(Exception e1)

{

(null,());

return false;

}

if(f2<=0||f2>1000) throw new DefException();

return true;

}

/**********成员方法:运算处理***********/

public void compute()

{

try

{ if(!isNumber()) { (); return; } }

catch(DefException e2) //处理自定义异常

{

(null,());

();

return;

}

switch ())

{

^

case 0: f1=f1+f2; break;

case 1: f1=f1-f2; break;

case 2: f1=f1*f2; break;

case 3: f1=f1/f2; break;

}

(""+f1);

(" = "+f1);

("");

();

}

'

/********ActionListener接口方法************/

public void actionPerformed(ActionEvent e)

{

if()==ok) compute(); //执行成员方法,继续下一数运算

else if()==next) //清零,开始新的运算

{ f1=0;

("");

("");

("");

(0);

();

}

else if()==exit) (); //结束程序

}

/*添加内部类KeyPressListener*/

class KeyPressListener extends KeyAdapter

{

public void keyPressed(KeyEvent e) //键盘按下事件

{

if()!= return; //如果不是按了Enter键,则不处理

@

if()==op) (); //选择运算后,准备输入运算数

else compute(); //执行成员方法,继续下一数运算

}

} //内部类结束

}

⑶分别编译、程序,生成、类文件,以供其他应用程序所用。

⑷程序及分析

本程序是一个简单计算器程序,除了界面组件外,在类中还定义了几个成员变量:f1和f2(float) 两个运算数,其中f1记录运算的结果,并作为运算数参与运算,f2是输入的运算数。

两个方法:

isNumber() 该方法用于确定输入的运算数是否合格,合格才能参与运算。在方法中捕捉并处理数据格式异常。当数据在0~1000之外时,创建并抛出自定义异常DefException 对象

compute() 方法用于计算处理。在方法中捕捉并处理了自定义的数据超界异常,在确保输入的数据合格后,方能进行运算数的运算。

程序实现了两个接口ActionListener和KeyListener,其中KeyListener接口以内部类的方式实现。当输入运算后,单击按钮“下一个”和按“Enter”键,其目的是一样的,都表明已输入运算数,可以进行运算,将这一功能处理放在compute()方法中完成。

⑸编写测试程序,测试Calculator类的功能。测试程序代码如下:

public class Test Calculator

{

public static void main(String [] args)

{

new Calculator();

}

}

编译执行程序,测试程序的功能。

自由练习仿照上述实验示例,修改自由练习,创建自定义异常类,当输入的入学成绩超出599~700时,视为超界数据,添加捕捉自定义异常的功能。

相关主题
文本预览
相关文档 最新文档