实验4-1 InputMismatchException异常

该程序使用Java的Scanner类从用户处获取两个整数并计算其和。如果输入的不是整数,程序会捕获InputMismatchException异常,并提示用户重新输入整数。示例中给出了错误输入的情况及对应的错误提示。

作者 殷伟凤

单位 浙江传媒学院

(InputMismatchException异常)编写一个程序,提示用户读取两个整数,然后显示它们的和。程序应该在输入不正确时提示用户再次读取数值。

输入格式:

输入多组两个数

输出格式:

输出两个数的和

输入样例:

在这里给出一组输入。例如:

1  3
2.0  3
3.0  4
4  5

输出样例:

在这里给出相应的输出。例如:

sum = 4
Incorrect input: two integer is required
Incorrect input: two integer is required
sum = 9

 代码如下:

import java.util.Scanner;
import java.util.InputMismatchException;
public class Main {

    public void Sc()
    {
                Scanner in = new Scanner(System.in);
        while (in.hasNextLine())
        {
            try {
                int num1=in.nextInt();
                int num2=in.nextInt();
                //in.nextLine();
                int sum = num1 + num2;
                System.out.println("sum = " + sum);
            } catch (InputMismatchException e) {
                System.out.println("Incorrect input: two integer is required");
                in.nextLine();
            }

        }
    }

    public static void main(String[] args) {
        Main main = new Main();
        main.Sc();
    }
}

1. 异常处理机制的应用 —— 简易计算器异常处理 1.1 样例 问题描述 编写简易计算器程序,实现两个整数的除法运算,处理以下异常场景: 1.除数为 0:触发ArithmeticException; 2.输入非整数:触发InputMismatchException; 要求:用try-catch捕获异常并给出友好提示,用finally关闭Scanner资源,确保程序不崩溃。 输入输出示例 正常输入: 请输入第一个整数:10 请输入第二个整数:2 计算结果:10 / 2 = 5 资源已释放(Scanner关闭) 异常输入(除数为 0): 请输入第一个整数:8 请输入第二个整数:0 异常提示:除数不能为0,请重新输入有效数字! 资源已释放(Scanner关闭) 异常输入(非整数): 请输入第一个整数:abc 异常提示:输入格式错误!请输入整数类型。 资源已释放(Scanner关闭) 样例代码 import java.util.InputMismatchException; import java.util.Scanner; public class CalculatorExceptionDemo { public static void main(String[] args) { Scanner sc = null; // 声明Scanner,便于finally关闭 try { // 1. 获取用户输入(可能触发InputMismatchException) sc = new Scanner(System.in); System.out.print("请输入第一个整数:"); int num1 = sc.nextInt(); System.out.print("请输入第二个整数:"); int num2 = sc.nextInt(); // 2. 除法运算(可能触发ArithmeticException) int result = num1 / num2; System.out.printf("计算结果:%d / %d = %d\n", num1, num2, result); } catch (ArithmeticException e) { // 捕获“除数为0”异常 System.out.println("异常提示:除数不能为0,请重新输入有效数字!"); // 可选:打印异常堆栈信息(调试用) // e.printStackTrace(); } catch (InputMismatchException e) { // 捕获“输入非整数”异常 System.out.println("异常提示:输入格式错误!请输入整数类型。"); } finally { // 3. 无论是否异常,均关闭Scanner(资源释放) if (sc != null) { // 避免sc为null时调用close()报错 sc.close(); System.out.println("资源已释放(Scanner关闭)"); } } } } 1.2 实验题目 升级简易计算器,支持 “整数数组求和” 功能,处理以下异常场景: 1.数组长度为负:触发IllegalArgumentException(通过throw主动抛出); 2.数组索引越界:触发ArrayIndexOutOfBoundsException; 3.输入非整数:触发InputMismatchException; 要求: 用try-catch捕获所有异常,给出对应提示; 用throws在方法声明处声明可能抛出的异常; 用finally确保Scanner资源关闭; 程序执行完毕后打印 “计算器程序结束”。 测试用例 测试场景 1:正常输入(数组长度 2,元素 3、5) 请输入数组长度(正整数):2 请输入2个整数(空格分隔):3 5 数组元素总和:8 资源已释放(Scanner关闭) 计算器程序结束 测试场景 2:数组长度为负 请输入数组长度(正整数):-3 异常提示:数组长度不能为负! 资源已释放(Scanner关闭) 计算器程序结束 测试场景 3:输入非整数 请输入数组长度(正整数):2 请输入2个整数(空格分隔):4 abc 异常提示:输入格式错误!请输入整数类型。 资源已释放(Scanner关闭) 计算器程序结束 测试场景 4:数组索引越界(数组长度 2,循环条件 i<=2) 请输入数组长度(正整数):1 请输入2个整数(空格分隔):1 2 异常提示:数组索引越界,请检查数组操作逻辑! 资源已释放(Scanner关闭) 计算器程序结束
最新发布
11-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值