数组值为参数化构造函数Java

时间:2017-10-26 14:16:17

标签: java arrays constructor

我有一个汽车类,如下:

public class Car {

    private String reg = null;
    double[] tyre = {0.0,0.0,0.0,0.0};

    public Car(String reg, double[] tyre) {
        super();
        this.reg = reg;
        this.tyre = tyre;
    }

    public double calculateAverageTyrePressure() {
        double p = tyre[0] + tyre[1] + tyre[2] + tyre[3];
        return p/4.0;
    }
}

我有一个测试类,我已经创建了一个对象,并希望为它的轮胎压力给它4个十进制值,但我无法弄清楚如何输入值而不会出现错误,如果我输入4个十进制值我希望我将构造函数更改为(String,double,double,double,double),这不是任务所要做的。

测试类:

public class CarTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Car car1 = new Car("V380 FEL", !!Need tyre values here!!);
    }
}

P.S抱歉如果这似乎是一个简单的问题,我刚开始使用Java并尝试学习。

3 个答案:

答案 0 :(得分:3)

试试Car car1 = new Car("V380 FEL", new double[] { 0.0, 0.0, 0.0, 0.0});。您需要使用其中的所有四个小数值初始化Java数组,以便满足当前构造函数。

答案 1 :(得分:2)

Car car1 = new Car("V380 FEL", new double[]{0.0,0.0,0.0,0.0});

答案 2 :(得分:1)

要回答当前的问题,您的构造函数将获取一个数组,如果您执行类似

的操作
new Car("hooptie", 32.0, 32.0, 32.0, 32.0) 

错误,正如您已经看到的那样,抱怨它无法找到匹配的构造函数。

一种选择是:

new Car("Hooptie", new double[]{32.0, 32.0, 32.0, 32.0}) ;

那就是说,我认为我们有机会在一点点改进你的API。汽车级别如何选择存放轮胎非常适合汽车级别。我不确定我们是否想要使用汽车类将其泄露给代码。

例如,如果我作为使用您的汽车类的人这样做会发生什么:

new Car("7 wheeler", new double[]{32.0, 32.0, 32.0, 32.0, 32.0, 32.0, 32.0 } )

应该允许吗?我不知道,这取决于你。

另一种选择是创建一个接收4个轮胎参数的构造器,然后将它们添加到内部轮胎阵列中。

new Car(String name, double tyrePressureOne, double tyrePressure2... ) {
   this.name = name;
   tyres[0] = tyrePressureOne;
...
}