实验名称:访问数组 实验目的:1.使用异常处理来确定有效的输入。 2.使用异常处理来编写更为健壮、容错性更好的程序。 3.创建自己的异常类型,并抛出这种类型的异常。 问题描述:编写一个程序,允许用户向一个大小为10的数组输入整型值。程序 应通过索引,或者通过指定一个大于0的值来查找数字元素,从而获 取数组中的值。程序应处理任何在向数组输入数值或访问数组元素时 发生的异常。此外,程序还应使用下面定义的 NumberNotFoundException异常处理类。如果试图访问超出数组边界 的元素,则捕获ArrayIndexOutOfBoundsException异常,并显示一个 合适的错误信息。 ### Java访问数组实验知识点解析 #### 实验背景与目的 本次实验主要围绕“Java访问数组”的主题展开,目的是让学生能够熟练掌握如何在Java中安全地访问数组元素,并且学会使用异常处理机制来增强程序的健壮性和容错能力。通过本实验的学习,学生将能够实现以下目标: 1. **理解并运用异常处理机制来验证用户输入的有效性**:这有助于避免因非法输入导致的程序崩溃或其他不可预期的行为。 2. **开发更健壮、更具容错性的程序**:通过适当处理可能出现的各种异常情况,可以显著提高程序的稳定性和用户体验。 3. **自定义异常类型并有效利用这些异常**:学习如何根据具体应用场景创建新的异常类,并在程序中合理地抛出和捕获这些异常。 #### 问题描述 本实验要求编写一个Java程序,该程序允许用户向一个大小为10的数组输入整型值。程序需要实现的功能包括: 1. **用户输入数据到数组**:用户可以通过控制台或图形界面输入整数,并将其存储在数组中。 2. **按索引访问数组元素**:用户可以选择一个索引来获取数组中的对应值。 3. **异常处理**:对于所有可能发生的异常情况(如输入非整数、索引超出数组范围等),程序必须能够正确处理,以确保不会出现运行时错误。 #### 源代码分析 **自定义异常类 `NumberNotFoundException`** ```java public class NumberNotFoundException extends Exception { public NumberNotFoundException() { super("Number not found in array"); } public NumberNotFoundException(String message) { super(message); } } ``` 此部分代码定义了一个自定义异常类 `NumberNotFoundException`,继承自 `Exception` 类。当尝试访问的数字不存在于数组中时,可以抛出此类异常。构造函数提供了两种方式来初始化异常消息。 **主程序 `ArrayAccess`** ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArrayAccess extends JFrame { // 省略部分代码 private JTextField inputField, retrieveValueField, retrieveIndexField, outputField; private JPanel inputPanel, retrievePanel, outputPanel; private int num, index = 0, accessArray[]; private String result; public ArrayAccess() { super("Accessing Array values"); accessArray = new int[10]; Container container = getContentPane(); container.setLayout(new FlowLayout()); // 输入面板 inputPanel = new JPanel(); inputPanel.add(new JLabel("Enter array elements here")); inputField = new JTextField(10); inputField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { try { for (int i = 0; i < 10; i++) { accessArray[i] = Integer.parseInt(e.getActionCommand()); inputField.setText(""); } } catch (ArrayIndexOutOfBoundsException ee) { JOptionPane.showInputDialog(null, "Array can only contain 10 elements", "Array full", JOptionPane.NO_OPTION); System.exit(0); } } } ); inputPanel.add(inputField); container.add(inputPanel); // 查找面板 retrievePanel = new JPanel(new GridLayout(2, 2)); retrievePanel.add(new JLabel("Enter number to retrieve")); retrieveValueField = new JTextField(10); retrieveValueField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { try { num = Integer.parseInt(e.getActionCommand()); result = num + " was in the following fields of the array: " + accessArray[num]; } catch (Exception ex) { // 处理异常 ex.toString(); } } } ); retrievePanel.add(retrieveValueField); container.add(retrievePanel); // 输出面板 outputPanel = new JPanel(); outputField = new JTextField(10); outputPanel.add(outputField); container.add(outputPanel); setSize(400, 200); setVisible(true); } public static void main(String[] args) { new ArrayAccess(); } } ``` 此部分代码展示了如何使用Swing构建一个简单的图形用户界面,以实现上述功能。主要包含以下几个关键部分: 1. **输入面板**:允许用户输入数据到数组中。 2. **查找面板**:用户可以输入一个数字,程序将在数组中查找该数字并返回结果。 3. **异常处理**:使用了多种异常处理技巧,如 `ArrayIndexOutOfBoundsException` 和 `NumberFormatException` 等。 ### 总结 通过本实验的学习,学生不仅能够掌握Java中数组的基本操作方法,还能深入了解异常处理机制的应用场景及其实现方式。这对于提升学生的编程技能和实际问题解决能力具有重要意义。此外,通过自定义异常类的实践,学生还可以更好地理解面向对象编程的核心概念之一——异常处理的设计模式。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助