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

bxjv4tth  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(332)

我是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++;
        }

    }

}
cqoc49vn

cqoc49vn1#

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

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++;
    }

}

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

tyky79it

tyky79it2#

问题就在你的循环里。见注解。

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中是零基的。

相关问题