在类中定义数组时出错

时间:2013-06-01 14:57:27

标签: java arrays class object

我正在尝试创建一个类,它将名称的文本文件读入数组,然后将该数组返回给主类。但是,我在尝试定义数组时遇到错误。

public class Test{
String[] foo;
String[] zoo;
String[] yoo;
}

我在String [] yoo

上收到错误
Syntax error on token ";", { expected after this 
token

我真的不知道发生了什么,有人可以帮忙吗?

编辑 - 代码的实际部分

    String[] swords;
    String[] prefix;
    String[] suffix;
    String[] rarity;
    String[] colors = {"2","3","4","5","6","7","9","a","b","c","d","e","f"};
    String[] bows = new String[3];
    String[] enchantments = {"Frost","Igniton","Projection","Explosion","Enhance Jump","Enhance Speed","Resist Flames","Invisibility"};
    rarity = new String[1000];
    swords = new String[1000];
    bows = new String[1000];
    prefix = new String[1000];
    suffix = new String[1000];

4 个答案:

答案 0 :(得分:2)

您不能将值分配给字段声明或块(或构造函数)之外的字段。所以这一行

rarity = new String[1000];

(和其他类似的)应该在构造函数中,或者声明也应该初始化字段:

String[] rarity = new String[1000];

答案 1 :(得分:1)

除非您发布所有代码,否则无法确定答案是否正确。

但我猜你有这个:

rarity = new String[1000];
swords = new String[1000];
bows = new String[1000];
prefix = new String[1000];
suffix = new String[1000];

在方法之外。这在Java中是不可能的。

请改为:

String[] rarity = new String[1000];

或在方法/构造函数

中初始化字段

答案 2 :(得分:1)

你不应该在构造函数或方法之外初始化

错:

public Test{
 String[] rarity;
 String[] swords;
 rarity = new String[1000]; 
 swords = new String[1000];
}

你可以这样做

public Test{
      String[] rarity = new String[1000]; 
      String[] swords = new String[1000];
    }

如果变量是静态的,您可以使用static

public Test{
   private static int x;
   static{
          x=2;
   }

}

使用构造函数来初始化:

 public Test{
    String[] swords;
    String[] prefix;
    String[] suffix;
    String[] rarity;
    String[] colors = {"2","3","4","5","6","7","9","a","b","c","d","e","f"};
    String[] bows = new String[3];
    String[] enchantments = {"Frost","Igniton","Projection","Explosion","Enhance Jump","Enhance Speed","Resist Flames","Invisibility"};
  public Test(){
    rarity = new String[1000];
    swords = new String[1000];
    bows = new String[1000];
    prefix = new String[1000];
    suffix = new String[1000];
  }
}

这就是全部

答案 3 :(得分:0)

首先,您应该将它们设为publicprivate(除非您确实需要将其设为包私有)。

像这样创建一个数组: Type[] variableName = new Type[length];

length是数组的大小,例如String[] test = new String[5]可以包含5个字符串。要设置它们,请使用test[i] = someString;,其中i是索引(从0开始,以长度结束 - 1)。

如果您不希望限制数组,但是使用更多内存,也可以创建一个ArrayList。

ArrayList<Type> variableName = new ArrayList<>();

例如: ArrayList<String> test = new ArrayList<>();

要添加到其中,请使用test.add(someString)并获取:arrayList.get(i)其中i是索引。

ArrayList的一个缺点是原始类型(intbyteboolean,...)无法使用。您需要使用IntegerByteBoolean,...

如果您有ArrayList<Integer>,则可以intArrayList.add(5),因为自动装箱会将5转换为new Integer(5)