Java报错”NegativeArraySizeException”的原因以及解决办法

  • Post category:Java

Java中的”NegativeArraySizeException”异常表示试图创建一个负数大小的数组,这是不合法的,抛出此异常。下面是该异常的原因及解决办法。

异常原因

Java的数组长度不允许为负数,当创建一个负数长度的数组时,会抛出”NegativeArraySizeException”异常。

解决办法

  1. 检查数组大小是否为负数

在创建一个数组之前,需要确保数组的大小不是负数。例如,对于下面这段代码:

int[] arr = new int[-5];

由于数组大小为负数,会抛出”NegativeArraySizeException”异常。可以通过添加if语句依据输入的情况来检查数组长度是否为正数:

int choice = sc.nextInt();
if(choice < 0){
  System.out.println("数组大小不能为负数!");
} else {
  int[] arr = new int[choice];
}
  1. 修改数组大小为正数

如果在程序运行时发现数组大小为负数,需要修改数组大小为正数,以避免抛出异常。例如,下面的代码中,使用的是用户输入来确定数组大小,如果用户输入的是负数,则会抛出”NegativeArraySizeException”异常。可以使用Math库中的abs()方法将负数转为正数:

int choice = sc.nextInt();
int[] arr = new int[Math.abs(choice)];

这样即使用户输入的是负数,数组大小也能转成正数,避免了抛出”NegativeArraySizeException”异常。

综上所述,正确使用Java的数组,需要避免数组大小为负数,可以通过添加if语句或使用Math库中的abs()方法来避免出现此异常。