1

名前のテキスト ファイルを配列に読み取り、その配列をメイン クラスに返すクラスを作成しようとしています。ただし、配列を定義しようとするとエラーが発生します。

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

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

まず第一に、それらをpublicorprivateにする必要があります (本当にパッケージプライベートにする必要がある場合を除きます)。

配列は次のように作成されます。 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、 ...を使用する必要があります。

がある場合は、オートボクシングが 5 を に変換するためArrayList<Integer>、可能です。intArrayList.add(5)new Integer(5)

于 2013-06-01T15:07:54.790 に答える