Java排序程序运行报ArrayIndexOutOfBoundsException越界错误怎么解决
错误根因
- Java类的int类型成员变量默认初始值为0,你在定义
int[] array = new int[n];时,n还未被赋值为用户输入的大小,此时创建的array数组长度固定为0。Java数组是定长结构,初始化后长度不会随后续n值的修改自动变化。 - 你在getData方法中读取到用户输入的数组长度n后,没有重新初始化array数组,直接向长度为0的数组中写入元素,触发了数组下标越界异常。
修复方法
在getData方法中拿到用户输入的n值后,先重新初始化array数组,再写入元素即可,修改后的Sorting.java代码如下:
import java.util.Scanner; public class Sorting { private int n; int[] array; // 先声明数组,等拿到n的实际值再初始化 public void getData(){ Scanner input = new Scanner(System.in); System.out.println("Enter the size of Array to be Sorted"); n = input.nextInt(); array = new int[n]; // 拿到数组长度后再创建对应大小的数组 System.out.println("Enter elements of an array "); for (int i = 0; i < n; i++) { array[i] = input.nextInt(); } // 注:当前代码还未实现排序逻辑,showData方法输出的是原输入数组而非排序后的结果 } void showData(){ for (int i = 0; i < n; i++) { System.out.println("Array => "+ array[i]); } System.out.println(n); } }
内容的提问来源于stack exchange,提问作者Uttam
相关产品推荐
相关产品推荐

