有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用2d数组时出现java运行时异常

我编写了一个类,它有一个2d数组,该数组根据用户输入而增长,并允许用户在数组中输入数字。用户将输入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) 个答案

  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)
    
  2. # 2 楼答案

    第二维度的长度应该是nums[i].length,注意:(i对于您的示例)