1.实现一个可以检测数组越界的异常检测程序。 2.输入正整数 n ,求 n 的阶乘,并捕获输入数字格式异常( NumberFormatException )。 用java来实现
时间: 2024-10-27 18:05:35 浏览: 15
输入两个正整数m和n求其最大公约数和最小公倍数 (2).pdf
1. 在Java中,我们可以使用try-catch语句块来创建一个异常检测程序,当数组索引超出范围时抛出`ArrayIndexOutOfBoundsException`。这里是一个简单的例子:
```java
public class ArrayBoundChecker {
public static void main(String[] args) {
int[] array = new int[5]; // 假设我们有一个长度为5的数组
try {
System.out.println(array[array.length]); // 这将引发ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index out of bounds: " + e.getMessage());
}
}
}
```
2. 求n的阶乘并捕获`NumberFormatException`,我们需要从用户那里获取输入,然后使用递归计算阶乘。这里是一个示例:
```java
import java.util.Scanner;
public class FactorialWithExceptionHandling {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a positive integer: ");
try {
int n = scanner.nextInt();
if (n < 0) {
throw new IllegalArgumentException("Input must be a non-negative integer");
}
long factorial = calculateFactorial(n);
System.out.println("The factorial of " + n + " is: " + factorial);
} catch (NumberFormatException e) {
System.out.println("Invalid input format! Please enter a number.");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} finally {
scanner.close();
}
}
private static long calculateFactorial(int num) {
if (num == 0 || num == 1)
return 1;
else
return num * calculateFactorial(num - 1);
}
}
```
在这个程序中,如果用户输入的不是正整数,我们会捕获到`NumberFormatException`;如果输入的是负数,会抛出`IllegalArgumentException`。
阅读全文