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

Arrays Java帮助-预期表达式/类的启动非法,arrays,object,constructor,Arrays,Object,Constructor,好的,基本上我要做的就是让我的构造函数重复两个静态变量 在另一个类中,我称这个对象为Ship public class Ship { public static int[] size = {3, 2, 3, 5, 4}; public static String[] shipNames = {"Destroyer", "Cruiser", "Submarine

好的,基本上我要做的就是让我的构造函数重复两个静态变量

在另一个类中,我称这个对象为Ship

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]);   

对于像我这样的初学者来说,使用数组是相当令人困惑的(

这里有很多错误

  • 当您编写类似于
    字符串shipNames[]
    的内容时,
    []
    不是变量名的一部分。它是变量类型的一部分。因此,当您仅使用变量时,不应编写它们

  • 您声明构造函数接受数组,但您试图向其传递单个值。您实际希望发生什么情况

  • 当您参考
    this.shipNames
    时,可能您的意思是设置正在构造的对象的某个字段。但您尚未定义此类字段。类中已经有一个名为
    shipNames
    的对象,但它是
    静态的
    ——它是类的一部分,而不是实例


  • 您的代码有几个问题

    首先,您正在向构造函数传递字符串和int,而不是字符串数组或int数组:

    Error: illegal start of expression
    Error: '.class' expected 
    Error: illegal start of expression
    Error: '.class' expected
    
    其次,您需要在构造函数中接收字符串和int,如下所示:

    newShip = new Ship(Ship.shipNames[i],Ship.size[i]);
    

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

    Java编译器通常会告诉您发生错误的源代码行号。错误消息指示的行号是什么,这是源代码的哪一行?您声明的是类变量而不是实例变量s通过使用关键字
    static
    。仍然存在一些其他错误。请参见下面的某人的答案
    public String shipName; 
    public int size;
    public Ship(String shipName, int size)
      {
        this.shipName = shipName;
        this.size = size;
      }