好文档 - 专业文书写作范文服务资料分享网站

第九章-Java异常处理练习Word版

天下 分享 时间: 加入收藏 我要投稿 点赞

第九章 异常

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

9.1 实验一:异常处理及应用

实验目的

(1). 了解异常的基本概念、异常的的产生和异常处理的过程。 (2). 基本掌握异常在应用程序中的应用。 实验要求

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

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

实现该示例的步骤如下: ⑴ 简要分析

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

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

/*这是一个小学生综合训练题测试的应用程序 *程序的名称:Exercise.java

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

import java.awt.*;

import java.awt.event.*; import java.util.*; import javax.swing.*;

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) {

this.total=total;

num1.setText(\ num2.setText(\

info.setText(\测试题目数:\道\

answer.setEnabled(false); //在没开始答题之前,不得答题 start.addActionListener(this); next.addActionListener(this); next.addKeyListener(this); answer.addKeyListener(this); }

/***ActionListener接口方法实现***/

public void actionPerformed(ActionEvent e) {

if(e.getSource()==start) { start.setEnabled(false); //使开始按钮失效 answer.setEnabled(true); //开始答题 answer.requestFocus(); count=right=0; n1=rand.nextInt(100); n2=rand.nextInt(100); num1.setText(\ num2.setText(\ timenum=System.currentTimeMillis(); } else if(e.getSource()==next) compute(); //调用compute()成员方法 }

/***KeyListener接口方法实现***/

public void keyPressed(KeyEvent e) //当按一个键时调用它 {

if(e.getKeyCode()!=e.VK_ENTER) return; //如果不是按了Enter键,则不处理 compute(); //调用compute()成员方法 }

public void keyReleased(KeyEvent ke) //当一个键被释放时调用它 {

/*当需要时,输入相关处理代码*/ }

public void keyTyped(KeyEvent ke) //当输入一个字符键时调用它 {

/*当需要时,输入相关处理代码*/ }

/**********成员方法设置运算符***********/ public void setOperator() //设置运算符方法 {

if(n1>50&&n2>50) if(n1

else op.setText(\进行减法运算 else if(n1>50) if(n2>10) op.setText(\进行减法运算 else op.setText(\进行除法运算 else if(n2>50) if(n1>10) op.setText(\进行加法运算 else op.setText(\进行乘法运算 else if(n1>n2&&n2<10) op.setText(\进行除法运算

else if(n1<10||n2<10) op.setText(\或n2<=10 进行乘法运算 else op.setText(\其他进行加法运算 }

/**********成员方法:运算及答案处理***********/ public void compute() {

float x=0; //定义变量 try //本题正确结果的计算与实际答题结果的比较 { if(op.getText().equals(\ else if(op.getText().equals(\ else if(op.getText().equals(\ else if(op.getText().equals(\ if(x==Float.parseFloat(answer.getText())) right++; } catch(NumberFormatException e)

{ JOptionPane.showMessageDialog(null,\数据格式错误,请重新输入数据!!!\ answer.requestFocus(); return; } catch(Exception e1)

{ JOptionPane.showMessageDialog(null,e1.toString()); return; } count++; if(count==total) //测试结束 { JOptionPane.showMessageDialog(null,\总题目数\答对\道,花费时间\秒!!!\

System.exit(0); }

n1=rand.nextInt(100)+1; //产生下一题 n2=rand.nextInt(100)+1; num1.setText(\ num2.setText(\ setOperator(); //设置运算符号 answer.setText(\ answer.requestFocus(); } }

⑶ 编译Exercise.java程序,生成Exercise.class类文件,以供其他应用程序所用。 ⑷ 程序及分析

在compute()方法中使用了try~catch结构捕捉并处理可能出现的数据格式异常 (NumberFormatException)和其他异常(Exception),当在结果栏中没有输入内容或输入非数字字符按“Enter”键或单击“下一题”按钮时,获取结果栏中的字符串并将它转换为数值时会产生数据格式异常(NumberFormatException),处理的办法是使用对话框提示错误信息,并定位到结果栏让训练者重新输入题目答案。

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

import javax.swing.*;

public class TestExercises extends JFrame {

TestExercises() {

add(new Exercises(30)); //选30道题进行训练 setVisible(true); pack();

setDefaultCloseOperation(3); }

public static void main(String [] args) {

new TestExercises(); } }

编译并运行测试程序,会出现如图9-1a的对话框,单击“开始”按钮,进入如图9-1b

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

的答题界面,可以输入题目答案,然后按“Enter”或单击“下一题”按钮进入下一题,若在答题时没输入答案或输入非数字字符,则会出现如图9-1c的消息对话框,此时,可单击“确定”按钮,返回到应答栏,重新输入应答数据。最后在完成答题后,会出现如图9-1d的结果对话框。

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

自由练习9.1 修改上一章自由练习8.1建立的输入学生信息程序,捕捉并处理当输入入学成绩时的数据错误。

实验示例9.1.2 编写程序,实现如图9-2的用户界面,完成一个简单的计算器应用程序。要求:可以进行+、=、*、/四种运算;为了操作方便,输入运算数后按“Enter”键连续进行下一数运算,并保留用鼠标单击“下一个”按钮连续

图9-2 实验示例9.1.2屏幕界面

进行下一数运算;并要求输入的运算数在0~1000之间。按“清零”按钮,结束当前的运算过程,开始一个新的运算。

实现该示例的步骤如下: ⑴ 简要分析

和实验示例9.1.1类似,使用awt和swing的组件(JLabel、JTextField、JPanel、JBurron等)构建用户界面。实现ActionListener接口完成按钮的功能;建立一个继承KeyAdapter适配器类的内部类KeyPressListener,在类中重写 keyPressed()方法完成按键功能的实现,同样只需关注“Enter”键。为保证输入的运算数在0~1000之间,可以使用自定义异常实现,对输入0~1000之外的数据将视为数据超界。

⑵ 根据上述简要分析,给出如下参考程序代码。 首先给出自定义异常类:

class DefException extends Exception {

DefException() //构造方法 {

super(\数据超界错误!!!\ }

public String toString() //返回信息方法 {

return \数据超界错误!要求数字范围0~1000之间!!!\ } }

计算器应用程序代码如下:

/*这是一个简单的计算器应用程序 *程序的名称:Calculator.java */

import java.util.*; import java.awt.*;

import java.awt.event.*; import javax.swing.*;

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(); JPanel jp2=new JPanel(); public Calculator() { this.setTitle(\简单计算器应用\ this.setLayout(new GridLayout(3,1)); this.add(new JLabel(\请选择运算并输入运算数:\ op.add(\

第九章-Java异常处理练习Word版

第九章异常在Java应用程序中,异常处理是保证程序正常、可靠运行的一个重要方面,在前边已经遇到了简单的异常处理。本章实验将主要针对程序中常用的异常的处理及异常的应用。9.1实验一:异常处理及应用实验目的(1).了解异常的基本概念、异常的的产生和异常处理的过程。(2).基本掌握异常在应用程序中的应用。
推荐度:
点击下载文档文档为doc格式
181nl98rj02b61z97l7x8uhsm07tfq016yy
领取福利

微信扫码领取福利

微信扫码分享