索引 5 超出 Simple_Inversions.main(Simple_Inversions.java:24) 的长度范围

问题描述

-我的程序的主要功能是计算数组的反转。 示例:

  1. 输入:5 0 1 2 3 4(第一个输入是数组的长度) 输出:0(因为所有数字都按正确顺序排列)
  2. 输入:5 4 3 2 1 0 输出:4
  3. 输入:5 0 1 2 4 3 输出:1

-代码的第一部分是定义数组的长度并用数字填充数组。 我觉得我做的一切都是正确的,但我不明白为什么会出现以下错误

“线程“main”中的异常 java.lang.Arrayindexoutofboundsexception: 长度为 5 的索引 5 越界 在 Simple_Inversions.main(Simple_Inversions.java:24)"

希望你能帮助我。谢谢!

(旁注:错误中的数字 5 是 5,因为我输入的数组的长度是 5。所以它会根据那个而变化)

import java.util.Scanner;

public class Simple_Inversions {
    public static void main(String[] args) {

        Scanner sc = new Scanner(system.in);
        int index;
        int anzahl;
        int[] feld;
        int inversionen;

        anzahl = sc.nextInt();
        feld = new int[anzahl];

        index = 0;
        while ( index < anzahl )
        {
            feld[index] = sc.nextInt();
            index = index + 1;
        }
          inversionen=0;
        index=0;
        while(index < feld.length){
            if(feld[index+1]<feld[index]) {

                inversionen = inversionen + 1;
            }
            index=index+1;


        }



        System.out.println(inversionen);


    }
}

解决方法

当索引为 4 时,它在 if(feld[index+1] 失败,该行尝试访问第 5 个元素,如@zhh 所建议的

改变 while(index 到 while ((index + 1)