【问题标题】:can not initialize a two dimensional array in java using for loop无法使用for循环在java中初始化二维数组
【发布时间】:2014-03-05 22:42:24
【问题描述】:

我无法使用 for 循环初始化二维数组

import java.util.Scanner;

   public class Quater{
      public static void main(String[] args){
        //declare an array
        double product[][]=new double[3][2];

        //declare a Scanner object
        Scanner userInput=new Scanner(System.in);

        //ask the user for input

        System.out.println("Please enter your data");
        for(int i=0;i<=1;i++)
        {
          for(int j=0;j<=2;j++){
          System.out.println(" enter your data");

          product[i][j]=userInput.nextDouble();
        } 
      }
    }
  }

问题是当我尝试输入第三个数字时,这会关闭并且无法正常工作,但是,如果我将其设为新的 double[100][100],则它可以工作并允许我输入 6 个数字。

【问题讨论】:

  • “不工作”怎么办?请明确点。如果你有一个堆栈跟踪,也包括它。
  • 堆栈跟踪....我们需要堆栈跟踪...
  • 您应该初始化数组数组中的每个数组。

标签: java arrays for-loop


【解决方案1】:

外部循环遍历行,内部循环遍历列,因此您需要有一个维度数组double[2][3],而不是您使用的double[3][2]

【讨论】:

    【解决方案2】:

    如果您将数组设为new double[3][2],则可以访问product[i][j],其中i 最高为3-1=2,j 最高为2-1=1。也就是说,索引的边界与它们在new 中出现的顺序相同。但是您正在尝试访问product[i][j],其中j 是2。

    【讨论】:

      【解决方案3】:

      更正的代码。看这个。两个fors的条件是固定的。你应该使用长度来做,更好的是使用'ArrayIndexOutOfBoundsException。

      public static void main(String[] args){
                  //declare an array
                  double product[][]=new double[3][2];
      
                  //declare a Scanner object
                  Scanner userInput=new Scanner(System.in);
      
                  //ask the user for input
      
                  System.out.println("Please enter your data");
                  for(int i=0;i<product.length;i++)
                  {
                      for(int j=0;j<product[i].length;j++){
                          System.out.println(" enter your data");
      
                          product[i][j]=userInput.nextDouble();
      
                      }
                  }
              }
      

      要查看效果,您只需粘贴该代码即可。

      for (double[] doubles : product) {
                      for (double aDouble : doubles) {
                          System.out.println(aDouble);
                      }
                  }
      

      【讨论】:

      • 除了更正的代码之外,您还应该说明问题所在、如何修复以及为什么此修复有效。
      • OutOfArrayExceptions 你的意思是ArrayIndexOutOfBoundsException
      • 是的ArrayIndexOutOfBoundsException :)
      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多