简单程序中的运行时错误,以打印数组的所有元素

时间:2016-03-16 09:16:11

标签: java arrays

问题:给定一个数组,打印所有元素。第一行输入包含多个测试用例。输出应如下: -

xs:time

以下代码有什么问题?

import java.util.*;
import java.lang.*;
import java.io.*;

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

        Scanner sc = new Scanner(System.in);
        int t= sc.nextInt();

        int arr[][] = new int[t][];
        int len[] = new int[t];

        for(int i=0;i<t;i++)
        {
            len[i]= sc.nextInt();
            arr[i] = new int[len[i]];

            for(int j=0;j<len[i];j++)
            {
                arr[i][j] = sc.nextInt();
            }
        }

        for(int i=0;i<t;i++)
        {
            //System.out.println(Arrays.toString(arr[i]) );
            for(int j=0;i<len[i];j++)
            {
                System.out.println(arr[i][j]);
            }
        }
    }
}

例外:

java.lang.ArrayIndexOutOfBoundsException: 5
at GFG.main(GFG.java:24)

2 个答案:

答案 0 :(得分:1)

打印在例外

  

java.lang.ArrayIndexOutOfBoundsException:5
  在GFG.main(GFG.java:24)

第23行的

用j替换i因为循环因为i

而继续
class GFG {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();

        int arr[][] = new int[t][];
        int len[] = new int[t];

        for (int i = 0; i < t; i++) {
            len[i] = sc.nextInt();
            arr[i] = new int[len[i]];

            for (int j = 0; j < len[i]; j++) {
                arr[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < t; i++) {
            // System.out.println(Arrays.toString(arr[i]) );
            for (int j = 0; j < len[i]; j++) {  // replaced i with j I think  copy paste problem
                System.out.println(arr[i][j]);
            }
        }

    }
}

答案 1 :(得分:0)

异常在行

for(int j=0;i<len[i];j++)

您正在递增j而没有任何边界,因此会抛出ArrayIndexOutOfBound异常。它将打印到5 1 2 3 4 5但在此之后它会给runtime例外。

更改为

for(int j=0;j<len[i];j++)