请编写一个捕获异常的小程序:计算二个数的商,分别捕获数组越界、数据格式不 正确、除数为零三种异常。java
时间: 2023-09-21 12:05:45 浏览: 130
### 回答1:
```java
import java.util.Scanner;
public class ExceptionHandlingExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
int dividend = scanner.nextInt();
System.out.print("请输入除数:");
int divisor = scanner.nextInt();
int result = divide(dividend, divisor);
System.out.println("商为:" + result);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界异常:" + e.getMessage());
} catch (NumberFormatException e) {
System.out.println("数据格式不正确异常:" + e.getMessage());
} catch (ArithmeticException e) {
System.out.println("除数为零异常:" + e.getMessage());
} finally {
scanner.close();
}
}
public static int divide(int dividend, int divisor) throws ArithmeticException {
return dividend / divisor;
}
}
```
在以上代码中,我们使用了 `try-catch` 语句块来捕获可能抛出的异常。在 `try` 语句块中,我们读取用户输入的被除数和除数并计算它们的商。如果其中出现异常,`try` 语句块内的代码就会停止执行,转而执行 `catch` 语句块中的代码。我们使用了 `catch` 语句块来捕获可能抛出的三种异常:数组越界、数据格式不正确、除数为零。在每个 `catch` 语句块中,我们输出了异常信息。最后,我们使用了 `finally` 语句块来关闭 `Scanner` 对象。
### 回答2:
下面是一个能够捕获数组越界、数据格式不正确、除数为零三种异常的小程序:
```java
import java.util.Scanner;
public class ExceptionHandling {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入被除数:");
int a = Integer.parseInt(scanner.nextLine());
System.out.println("请输入除数:");
int b = Integer.parseInt(scanner.nextLine());
int result = divide(a, b);
System.out.println("商是:" + result);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("捕获到数组越界异常,请输入正确的整数数字。");
} catch (NumberFormatException e) {
System.out.println("捕获到数据格式不正确异常,请输入正确的整数数字。");
} catch (ArithmeticException e) {
System.out.println("捕获到除数为零异常,请输入非零除数。");
}
}
public static int divide(int a, int b) {
return a / b;
}
}
```
在上面的代码中,程序首先会要求用户输入被除数和除数,然后将输入的字符串转换为整数类型。接下来会调用`divide`方法进行除法运算,并将结果打印输出。如果捕获到`ArrayIndexOutOfBoundsException`、`NumberFormatException`或`ArithmeticException`异常,则会按照相应的异常类型输出错误提示。
注意,该程序假设用户输入的被除数和除数都是整数类型。如果用户输入的是非整数字符或空串,则会抛出`NumberFormatException`异常。因此,用户在输入时应该注意遵循程序的要求。
### 回答3:
以下是一个能够捕获数组越界、数据格式不正确、除数为零的小程序,用于计算两个数的商:
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionHandlingExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
int dividend = scanner.nextInt();
System.out.print("请输入除数:");
int divisor = scanner.nextInt();
int result = divide(dividend, divisor);
System.out.println("商:" + result);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界异常:" + e.getMessage());
} catch (InputMismatchException e) {
System.out.println("数据格式不正确异常:" + e.getMessage());
} catch (ArithmeticException e) {
System.out.println("除数为零异常:" + e.getMessage());
} finally {
scanner.close();
}
}
public static int divide(int dividend, int divisor) {
return dividend / divisor;
}
}
```
这个程序中,我们使用了`Scanner`来获取输入的被除数和除数。在`try`块中,我们调用了`nextInt()`来获取输入的整数值,并使用这两个数执行除法运算。如果出现数组越界、数据格式不正确或除数为零的异常,分别在`catch`块中捕获并处理异常。最后,在`finally`块中关闭`Scanner`对象,释放资源。
请注意,如果输入的除数为零,会抛出`ArithmeticException`异常。如果输入的被除数或除数不是整数,会抛出`InputMismatchException`异常。而对于数组越界,我们没有特意编写触发的代码,但如果在其他地方使用了和数组相关的操作,如果越界,也会抛出`ArrayIndexOutOfBoundsException`异常。
希望这个例子对你有帮助!
阅读全文