请编写一个捕获异常的小程序:计算二个数的商,分别捕获数组越界、数据格式不 正确、除数为零三种异常。java
时间: 2023-06-12 14:05:20 浏览: 131
以下是一个Java程序,可以计算两个数的商并捕获三种异常:
```java
import java.util.Scanner;
public class DivideNumbers {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
int dividend = input.nextInt();
System.out.print("请输入除数:");
int divisor = input.nextInt();
int quotient = divide(dividend, divisor);
System.out.println("商为:" + quotient);
} 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 {
input.close();
}
}
public static int divide(int dividend, int divisor) throws ArithmeticException {
return dividend / divisor;
}
}
```
在该程序中,我们先使用Scanner类从用户输入中获取被除数和除数。然后,我们调用名为divide的自定义方法来计算二者的商。该方法可能会抛出ArithmeticException异常,因此我们在调用该方法时使用try-catch块来捕获该异常。
我们还使用两个catch块来捕获ArrayIndexOutOfBoundsException和NumberFormatException异常。这些异常可能发生在用户输入被除数和除数时,因为用户可能会输入意外的值。最后,我们使用一个finally块来关闭Scanner对象。
请注意,在divide方法中,我们使用throws关键字来声明该方法可能会抛出ArithmeticException异常。这是因为在Java中,如果一个方法可能会抛出某种异常,我们必须在方法签名中声明这种可能性。在这种情况下,我们声明divide方法可能会抛出ArithmeticException异常,因为我们知道如果除数为零,该异常将被抛出。
阅读全文