数组索引超出范围第二个测试用例的异常

时间:2016-05-19 13:18:11

标签: java arrays indexoutofboundsexception

import java.util.Scanner;
class Little_elephant
{
    public static void main(String args[])
    {
        Scanner scan = new Scanner(System.in);
        int t = scan.nextInt();
        int arr[] = new int[100];
        int inversions, localInversions;
        for(int i = 0; i < t; i++)
        {
            inversions = 0;
            localInversions = 0;
            int n = scan.nextInt();
            for(int j = 0; j < n; j++)
            {
                arr[j] = scan.nextInt();
            }
            for(int j = 0; j < n - 1; j++)
            {
                for(int k = j + 1; j < n; k++)
                {
                    if(arr[j] > arr[k])
                    {
                        inversions++;
                    }
                }
                if(arr[j] > arr[j+1])
                    localInversions++;
            }
            if(inversions == localInversions)
                System.out.println("YES");
            else
                System.out.println("No");
            }
        }
    }
}    

程序在编译时没有显示错误,但是在第23行获得了数组索引超出范围的异常。此错误是当我尝试多于一种情况,即t> 1时。请有人帮助我!

2 个答案:

答案 0 :(得分:1)

你有一个循环for(int k = j + 1; j < n; k++)
您正在增加k,但条件是j

答案 1 :(得分:0)

第21行的k嵌套for循环没有说明k的终止子句,而是j。所以现在你的循环看起来像这样:

for(int k = j + 1; j < n; k++)

它应该说:

for(int k = j + 1; k < n; k++)

注意k小于n,而不是小于n。