问题:给定一个数组,打印所有元素。第一行输入包含多个测试用例。输出应如下: -
以下代码有什么问题?
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)
答案 0 :(得分:1)
打印在例外
第23行的java.lang.ArrayIndexOutOfBoundsException:5
在GFG.main(GFG.java:24)
用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++)