【问题标题】:ArrayIndexOutOfBoundsExecption on RangeFinder programRangeFinder 程序上的 ArrayIndexOutOfBoundsExecption
【发布时间】:2020-03-25 12:01:49
【问题描述】:

我发布的程序应该让用户创建一个数组,然后将整数值添加到其中。

程序将调用一个方法来查找数组的范围,然后在打印数组的同时打印返回的值。

但是,当我尝试运行它时,我得到了一个 ArrayIndexOutOfBoundsExecption

`

导入 java.util.*; 公共类 RangeFinder {

public static void main(String[] args) {

    System.out.println("Please enter the length of your array: ");
    Scanner sc = new Scanner(System.in);
    int size = sc.nextInt();
    int[] userArray = new int[size];

    for (int i = 0; i != size; i++) {
        System.out.println("Please enter the number for your array[" + (i+1) + "]: ");
        int temp = sc.nextInt();
        userArray[i] = temp;

    }

    RangeFinder.range(userArray);

    System.out.println();
    System.out.println(Arrays.toString(userArray));
    System.out.println(RangeFinder.range(userArray));


}



public static int range(int[] array) {

     int[] testArray = array;
     Arrays.sort(testArray);
     int smallest = testArray[0];
     int largest = testArray[array.length];

    int range = largest - smallest;


    return range;
  }

} `

【问题讨论】:

    标签: java eclipse indexoutofboundsexception


    【解决方案1】:

    这是在数组边界之外选择:

    int largest = testArray[array.length];
    

    例如,如果数组的长度为10,那么索引是从09。尝试选择项目 testArray[10] 是一个错误。您想从长度中减去1 以获得最后一个元素:

    int largest = testArray[array.length - 1];
    

    【讨论】:

      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2013-08-25
      • 2016-11-18
      相关资源
      最近更新 更多