Java异常处理与输入验证
版权申诉
34 浏览量
更新于2024-08-24
收藏 28KB DOC 举报
"Java异常处理相关的编程作业,包含两个题目,要求对可能出现的异常进行捕获和处理,确保程序能够正常运行。"
在Java编程中,异常处理是保证程序健壮性的重要手段。异常(Exception)是程序运行时发生的错误,如果不进行处理,会导致程序中断。Java提供了一套完整的异常处理机制,包括try-catch-finally语句块,用于捕获和处理异常。
题目一要求修改程序,捕获`StringIndexOutOfBoundsException`和`NumberFormatException`。`StringIndexOutOfBoundsException`通常发生在尝试访问字符串中不存在的索引时,而`NumberFormatException`则是在将字符串转换为特定数字类型(如Integer)时,字符串无法解析为有效数字时抛出的异常。以下是修改后的代码示例:
```java
package November;
import java.util.Scanner;
public class StringIndexOutOf {
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
try {
Scanner reader = new Scanner(System.in);
String str = reader.nextLine();
if (str.length() >= 4) {
System.out.println("第四个字符为" + str.charAt(3));
} else {
System.out.println("您输入的字符串长度不足4个字符");
}
int aa = Integer.parseInt(str);
System.out.println("平方为" + aa * aa);
} catch (StringIndexOutOfBoundsException e) {
System.out.println("您输入的数值下标越界");
} catch (NumberFormatException nfe) {
System.out.println("您输入的不是数字");
}
}
}
```
题目二要求从命令行接收5个整数并存储到数组中,需要处理两种异常:`NumberFormatException`和数组越界异常。当输入的不是整数时,捕获`NumberFormatException`;当输入的数据不足5个时,捕获数组越界异常。以下是修改后的代码示例:
```java
package November;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
if (args.length < 5) {
System.out.println("请输入至少5个整数");
return;
}
int[] numbers = new int[5];
try {
numbers[0] = Integer.parseInt(args[0]);
numbers[1] = Integer.parseInt(args[1]);
numbers[2] = Integer.parseInt(args[2]);
numbers[3] = Integer.parseInt(args[3]);
numbers[4] = Integer.parseInt(args[4]);
for (int num : numbers) {
System.out.println("整数:" + num);
}
} catch (NumberFormatException n) {
System.out.println("请输入整数");
}
}
}
```
以上代码对异常进行了捕获和处理,确保了即使在遇到错误数据或不足的数据量时,程序也能给出相应的提示,而不是直接崩溃。这样的处理方式提高了程序的用户体验,并且有助于开发者调试和解决问题。在实际编程中,良好的异常处理习惯可以极大地提高代码的稳定性和可靠性。
2022-06-09 上传
2021-09-30 上传
2021-10-07 上传
2024-10-28 上传
2024-10-29 上传
2024-10-28 上传
2024-10-28 上传
2024-10-28 上传
2024-10-31 上传
love1987421
- 粉丝: 1
- 资源: 7万+
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析