【问题标题】:Initialize size of array base from input in Java从Java中的输入初始化数组基数的大小
【发布时间】:2014-12-11 01:59:12
【问题描述】:

所以我在将值传递给 java 中的另一个类时遇到了问题。 我有一个接受用户方程的应用程序,在单击按钮后,它会找出方程具有的变量数,我将变量放在两个列表中。现在,我需要将这些变量传递给另一个类。

这是我需要使用变量的代码的 sn-p: beeColony.java

public class beeColony {
int D;
double Foods[][]=new double[FoodNumber][D];
public void getDimension(int D)
    {
        this.D = D;
    }
}

从这里开始,我需要将变量 Foods 初始化为具有取决于 FoodNumber 和 D 的大小。FoodNumber 没有问题,因为它是静态的。

在我的主应用程序中有一个事件处理程序

private void getvalueMouseClicked(java.awt.event.MouseEvent evt) { 
    bee.getDimension(dim);
}

当我在我的一种方法中输出变量 D 时,它等于我分配给它的值。我的问题是数组 Foods 的大小。我得到一个 IndexOutOfBounds 异常。我认为当我初始化数组Foods时,它无法获取D的值。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: java arrays class initialization size


    【解决方案1】:

    为什么要使用 getDimension() 来设置值?

    发生这种情况的原因是因为您必须创建了一个新的 beeColony 类,并且在执行此操作时使用了默认值 D(设置为零)。然后它会使用这个 D 值来创建 Foods 数组。这将创建一个大小为 FoodNumber x 0

    的 Foods 数组

    我会修改如下:

    public class beeColony {
       int D;
       double Foods[][]=null;
      public void getDimension(int D)
        {
           this.D = D;
           this.Foods = new double[FoodNumber][D];
        }
     }
    

    }

    【讨论】:

    • 我正在使用 getDimension 将 beeColony 类中 D 的值设置为基于用户输入的维度。您的解决方案效果很好,非常感谢!我之前试图使用 this.Foods = new Double[FoodNumber][D] 但我遇到了一个错误。也许是因为我初始化 Foods 的方式。我所做的是 double Foods[][];再次感谢您!
    猜你喜欢
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2018-12-31
    • 2022-12-03
    相关资源
    最近更新 更多