【问题标题】:Initialize object array with constructor parameter使用构造函数参数初始化对象数组
【发布时间】:2013-01-24 19:02:27
【问题描述】:

假设我有 2 个课程:

public class Carinfo {

private String Car;
private Carinfo [] value; 

Carinfo (String someCar, int carValue) {

this.car = someCar;
//At this point I want the "int carValue" to initialize private Carinfo [] value
}

第二个类创建汽车对象,在本例中,我将使用数组来实现

public class Generatecar {

Carinfo[] mycars = new Carinfo[1];

public Generatecar {

mycars[0] = new Carinfo("Lada", 9000);

}

我想要的是将 carValue 插入私有 Carinfo [] 值;大批。如何在 Carinfo 构造函数中初始化数组?

如果我说的不清楚,请告诉我。

【问题讨论】:

  • 首先想一想,在构造函数之外你会怎么做呢?而且您的构造函数周围缺少括号。
  • 那么数组的所有元素是否应该具有相同的值(9000)?
  • 如果您将数组的大小固定为1,为什么还要在GenerateCar 类中声明一个数组。为什么不只是简单的Carinfo 参考?
  • Carinfos 内部的数组本身没有意义,IMO。
  • 为什么Carinfo 包含Carinfos 的数组?这个数组代表什么以及如何填充它(没有无限递归)?也许你应该详细说明这些类应该代表什么以及你想要完成什么,而不是仅仅发布没有任何上下文的代码。

标签: java arrays parameters constructor


【解决方案1】:

尝试像这样创建Contructor

Carinfo (String someCar, int carValue) {
   this.car = someCar;
   this.value = new Carinfo[carValue];     
}

【讨论】:

  • 这个排序,我能够验证我需要的信息是否在正确的数组中。意思是我可以继续做作业
【解决方案2】:

您可以像设置任何其他变量一样设置数组变量:

mycars = new Carinfo[i];

【讨论】:

    【解决方案3】:

    你可以在构造函数中初始化值数组,通常的方式:

    public Carinfo(String someCar, int carValue) {
        this.car = someCar;
        value = new Carinfo[1];
    }
    

    但是当您尝试将 int 放入您的 Carinfos 数组时会遇到问题。 我不知道您打算在该数组中放入哪些其他值,但您应该考虑将其类型更改为 int(如果这是您要放入其中的唯一内容)。

    【讨论】:

      【解决方案4】:

      值 = 新的 Carinfo[carValue];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 2021-09-10
        • 2021-07-12
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        相关资源
        最近更新 更多