Java帮助 - 非法启动表达式/类预期

时间:2013-12-02 02:57:41

标签: arrays object constructor

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

对于像我这样的初学者来说,使用数组非常困惑。 :(

2 个答案:

答案 0 :(得分:1)

这里有很多不妥之处。

  1. 当您撰写String shipNames[]之类的内容时,[] 是变量名称的一部分。它是变量类型的一部分。所以当你刚才使用变量时,你不应该写它们。

  2. 您声明构造函数接受数组,但您尝试将单个值传递给它。你真的想要发生什么?

  3. 当您引用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;
  }

也可能存在其他语法和语义错误,但这些错误对我来说似乎是最明显的。

相关问题