Java 我得到了一个数组的越界错误,但我不明白为什么,第23行的错误

Java 我得到了一个数组的越界错误,但我不明白为什么,第23行的错误,java,Java,我是2D数组的新手,我试图在所有坐标中输入一个特定的值,所以我做了一个循环,但出于某种原因,它一直在运行,直到它说它超出了边界,好像循环没有闭合一样 import java.util.Scanner; public class main { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter

我是2D数组的新手,我试图在所有坐标中输入一个特定的值,所以我做了一个循环,但出于某种原因,它一直在运行,直到它说它超出了边界,好像循环没有闭合一样

import java.util.Scanner;
public class main {

     public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter Number of rows: ");
        int rows = input.nextInt();

        System.out.println("Enter Number or columns: ");
        int columns = input.nextInt();

        double[][] planets = new double[columns][rows];

        int columns_loop = 0;
        while (columns_loop <= columns) {
            int rows_loop=0;

            while (rows_loop<=rows) {
                System.out.println("Enter Rainfall (in mm): ");
                double rows_input=input.nextDouble();
                planets[columns_loop][rows_loop] = rows_input;
                rows_loop++;
            }
            columns_loop++;
        }

    }

}

问题在你的循环中。见评论

        while (columns_loop <= columns) { // should be < columns
            int rows_loop=0;

            while (rows_loop<=rows) { // should be < rows
                System.out.println("Enter Rainfall (in mm): ");
                double rows_input=input.nextDouble();
                planets[columns_loop][rows_loop] = rows_input;
                rows_loop++;
            }
            columns_loop++;
        }

数组在Java中是基于零的。

这是一个简单的错误,但在使用数组时,索引总是从[0]开始,因此当您调用while loop时,只需将其更改为:

import java.util.Scanner; public class main {
 public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("Enter Number of rows: ");
    int rows = input.nextInt();

    System.out.println("Enter Number or columns: ");
    int columns = input.nextInt();

    double[][] planets = new double[columns][rows];

    int columns_loop = 0;
    while (columns_loop < columns) {
        int rows_loop=0;

        while (rows_loop < rows) {
            System.out.println("Enter Rainfall (in mm): ");
            double rows_input=input.nextDouble();
            planets[columns_loop][rows_loop] = rows_input;
            rows_loop++;
        }
        columns_loop++;
    }

}

这将修复该错误并正确运行。

java中的arry是基于零的。因此,除了这篇文章的其他问题外,请标明第23行是哪一行。你可以在那一行上发表评论。这个问题可能会被否决,因为它是一个本地化的家庭作业问题。