【问题标题】:I get the error "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at com.company.Main.main(Main.java:21)" [duplicate]我收到错误“线程“主”java.lang.ArrayIndexOutOfBoundsException:2 at com.company.Main.main(Main.java:21) 中的异常”[重复]
【发布时间】:2020-11-10 12:19:13
【问题描述】:

我遇到的问题在第 21 行,即input[Weeks][Results] = scanner.nextDouble();

我不知道我做错了什么。该程序基本上只是询问我要输入多少周以及每周有多少结果,然后将它们存储在二维数组中。

package com.company;

import java.sql.SQLOutput;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("How many weeks?: ");
        int Weeks = scanner.nextInt();
        System.out.print("How many results per week?: ");
        int Results = scanner.nextInt();

        double[][] input = new double[Weeks][Results];

        for (int i = 0; i < Weeks; i++) {
            System.out.println("Temperature Week " + Weeks + ": ");
            for (int k = 0; k < Results; k++) {
                input[Weeks][Results] = scanner.nextDouble();
            }
        }
    }
}                                                                  

【问题讨论】:

  • 该错误意味着您正在尝试获取包含最多两个元素的数组的第三个元素。
  • 问问自己这个问题:为什么要声明 ik 却不使用它们?

标签: java arrays multidimensional-array


【解决方案1】:

您正试图在您声明为最大长度的同一位置插入数据。

您的数组的大小为[Weeks][Results],并且您正尝试将[Weeks][Results] 位置的双精度数添加到循环中。

将值更改为 ik,如下所示:

input[i][k] = scanner.nextDouble(); 

你的print 循环应该是:

System.out.println("Temperature Week " + i + ": ");

这不是错误,但打印将始终输出周数,而不是您要插入温度的实际周数。

【讨论】:

    【解决方案2】:

    使用input[i][k] = scanner.nextDouble(); 而不是input[Weeks][Results] = scanner.nextDouble();

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      相关资源
      最近更新 更多