使用2d数组时的运行时异常

时间:2013-04-25 18:52:39

标签: java arrays multidimensional-array runtimeexception

我写了一个类,它有一个基于用户输入增长的二维数组,允许用户在数组中输入数字。用户可以输入2 2作为大小,2 4 5 4输入数字它将打印出来像这样

2 2 
2 2

直到我输入数组大小7 1,7行和1列才有效。我得到一个例外

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at Assignment7.main(Assignment7.java:55)

我不明白为什么

import java.util.Scanner;
public class Assignment7 
{
public static void main(String[] args) 

    {




    Scanner scan = new Scanner(System.in);

    System.out.print(" ");

    int [][] nums = new int[scan.nextInt()][scan.nextInt()];


    System.out.print(" ");

    for (int i = 0; i < nums.length; ++i)
        {

        for (int j = 0; j < nums.length; ++j)

            {

            nums[i][j] = scan.nextInt();

            }           
        }           

    for (int i = 0; i < nums.length; ++i)

        {

            System.out.print("\n");

        for (int j = 0; j < nums.length; ++j)

        {

            System.out.print(nums[i][j]);

         }

        }

    }               
}

2 个答案:

答案 0 :(得分:3)

第二维的长度应为nums[i].length,注意:(您的示例为i

答案 1 :(得分:1)

对于你的内部循环,你使用的是外部数组的大小:

for (int i = 0; i < nums.length; ++i)
    {
    for (int j = 0; j < nums.length; ++j)

这应该是:

for (int i = 0; i < nums.length; ++i)
    {
    for (int j = 0; j < nums[i].length; ++j)