Java多维遍历



我从头开始学习编程,现在我在数组概念。我对多维数组有疑问,疑问是我得到用户输入作为矩阵范围和值,并试图遍历数组,但我得到了一个运行时错误。这是我的程序:

public class Multi {
    /**
     * @param args
     */
    public static void main(String[] args)throws IOException {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int arr[][] = new int[n][m];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                arr[i][j] = sc.nextInt();
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
               System.out.println(arr[j][i]);
            }
            System.out.println("n");
        }
        sc.close();
    }
}

输入:第一行包含两个空格分隔的整数

总共N行,

M -列总数。

下一个

N行包含

M个空格分隔的整数。

输出:打印M行,每行包含N个空格分隔的整数

(i got this error).

3 5 
13 4 8 14 1 
9 6 3 7 21
5 12 17 9 3

线程"main"出现异常95

. lang。ArrayIndexOutOfBoundsException: 3

at hackerearth.Multi.main(Multi.java:24)

输入图片描述

解决方案:(说明如下)

public static void main(String[] args)throws IOException {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int arr[][] = new int[n][m];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            arr[i][j] = sc.nextInt();
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            System.out.println(arr[i][j]);  //MODIFICATION
        }
        System.out.println("n");
    }
    sc.close();
}

第二个循环导致错误:

Exception in thread "main" 13 9 5
java.lang.ArrayIndexOutOfBoundsException: 3
at hackerearth.Multi.main(Multi.java:24)

Your Exception说:已经引起的索引是3。发生这种情况的行是文件Multi.java中的第24行。这是你的第二个双循环。

您已将ij交换。

你的数组是3x5:

+----+----+----+
| 00 | 01 | 02 |
+----+----+----+
| 10 | 11 | 12 |
+----+----+----+
| 20 | 21 | 22 |
+----+----+----+
| 30 | 31 | 32 |
+----+----+----+
| 40 | 41 | 42 |
+----+----+----+

和你在第24行试图访问的数组将是5x3:

+----+----+----+----+----+
| 00 | 01 | 02 | 03 | 04 |
+----+----+----+----+----+
| 10 | 11 | 12 | 13 | 14 |
+----+----+----+----+----+
| 20 | 31 | 32 | 33 | 34 |
+----+----+----+----+----+

访问03导致错误,因为它不在第一个数组中。

您正在获得错误,因为在打印语句中您正在访问arr[j][i]而不是arr[i][j]

相关内容

  • 没有找到相关文章