1

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

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

我在 String[] 上收到错误 yo

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

4 回答 4

2

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

rarity = new String[1000];

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

String[] rarity = new String[1000];
于 2013-06-01T15:06:25.797 回答
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];

或在方法/构造函数中初始化字段

于 2013-06-01T15:06:32.653 回答
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];
  }
}

就这样

于 2013-06-01T15:10:17.110 回答
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是不能使用原始类型( int, byte, boolean, ...)。您需要使用Integer, Byte, Boolean, ...

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

于 2013-06-01T15:07:54.790 回答