public class Ship
{
public static int[] size = {3, 2, 3, 5, 4};
public static String[] shipNames = {"Destroyer", "Cruiser", "Submarine",
"Aircraft Carrier", "Battleship"};
public Ship(String shipNames[], int size[])
{
this.shipNames[] = shipNames[];
this.size[] = size[];
}
}
好的,基本上我正在尝试做的是让我的构造函数重复两个静态变量......
在另一堂课中,我称这个对象为船舶......
newShip = new Ship(Ship.shipNames[i],Ship.size[i]);
但是当它发送时我收到这些错误消息:
Error: illegal start of expression
Error: '.class' expected
Error: illegal start of expression
Error: '.class' expected
对于像我这样的初学者来说,使用数组非常困惑。 :(
答案 0 :(得分:1)
这里有很多不妥之处。
当您撰写String shipNames[]
之类的内容时,[]
是变量名称的一部分。它是变量类型的一部分。所以当你刚才使用变量时,你不应该写它们。
您声明构造函数接受数组,但您尝试将单个值传递给它。你真的想要发生什么?
当您引用this.shipNames
时,可能您想要设置正在构建的对象的某个字段。但是你没有定义这样一个领域。你已经在课堂上有一个名为shipNames
的东西,但它是static
- 它是班级的一部分,而不是实例。
答案 1 :(得分:0)
您的代码存在一些问题。
首先,你在构造函数中传递一个字符串和一个int,而不是一个字符串数组或一个int数组:
newShip = new Ship(Ship.shipNames[i],Ship.size[i]);
其次,您需要在构造函数中接收字符串和int,如下所示:
public String shipName;
public int size;
public Ship(String shipName, int size)
{
this.shipName = shipName;
this.size = size;
}
也可能存在其他语法和语义错误,但这些错误对我来说似乎是最明显的。