gpt4 book ai didi

java - 我可以在构造函数的参数中初始化数组吗

转载 作者:行者123 更新时间:2023-11-29 06:36:57 24 4
gpt4 key购买 nike

我正在编写一个 Triangle 类的两个构造函数,它们作为参数:一个 String 、一个整数和一个 double 组

private double [] side = new double[3];

public Triangle() {
this("",0,side);
//Here I have a compile error says "Cannot refer to an instance field side while explicitly invoking a constructor"
}

public Triangle(String color, int opacity,double [] side) {
super(color, opacity);
this.side = side ;
}

在主要方法中我想初始化三角形 但直到现在我还不能这样做..

这两种方法我都试过了,但都不行

    GeoShapes[1] = new Triangle( "Red"  , 89 , {2,4,3} ) ;

GeoShapes[2] = new Triangle( "white", 68 , new double{5,6,3} );

注意:我确实尝试初始化一个数组,然后将其引用放在第三个参数中它有效,但这不是我需要的

谁能帮我写第三个参数?

最佳答案

你必须像这样使用它:

geoShapes[1] = new Triangle("Red"  , 89 , new double[] {2,4,3});

您只能在声明点或数组创建表达式中使用数组初始值设定项。

另一种选择是使用 varargs 作为参数类型:

public Triangle(String color, int opacity, double... side) {
super(color, opacity);
this.side = side ;
}

然后您可以使用以下方法创建实例:

geoShapes[1] = new Triangle("Red", 89 , 2, 4, 3);

关于您的 0-arg 构造函数中的问题:

public Triangle() {
this("",0,side);
}

您正在尝试将实例字段 side 传递给参数化构造函数,这是无效的,因为 side 尚未初始化。所有初始化都在 this()super() 调用之后完成。您应该创建一个数组并像往常一样传递它。所以这会起作用:

public Triangle() {
this("", 0, new double[] {0, 0, 0});
}

请遵循正确的 Java 命名约定。变量名称以小写字母开头。

关于java - 我可以在构造函数的参数中初始化数组吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com