0

配列の中に配列を入れることができるかどうか疑問に思っていましたか? 説明する方法が思いつきません。

        if (numOfPlayers >= 2) {
          this.config.getString("Tribute_one_spawn");
          String[] onecoords = this.config.getString("Tribute_one_spawn").split(",");
          Player Tribute_one = (Player)this.Playing.get(0);
          World w = p.getWorld();
          double x = Double.parseDouble(onecoords[0]);
          double y = Double.parseDouble(onecoords[1]);
          double z = Double.parseDouble(onecoords[2]);
          Location oneloc = new Location(w, x, y, z);
          Tribute_one.teleport(oneloc);
          this.Frozen.add(Tribute_one);
          Tribute_one.setFoodLevel(20);
          this.config.getString("Tribute_two_spawn");
          String[] twocoords = this.config.getString("Tribute_two_spawn").split(",");
          Player Tribute_two = (Player)this.Playing.get(1);
          World twow = p.getWorld();
          double twox = Double.parseDouble(twocoords[0]);
          double twoy = Double.parseDouble(twocoords[1]);
          double twoz = Double.parseDouble(twocoords[2]);
          Location twoloc = new Location(twow, twox, twoy, twoz);
          Tribute_two.teleport(twoloc);
          this.Frozen.add(Tribute_two);
          Tribute_two.setFoodLevel(20);
        }
        if (numOfPlayers() >= 3) {
          this.config.getString("Tribute_three_spawn");
          String[] coords = this.config.getString("Tribute_three_spawn").split(",");
          Player Tribute_three = (Player)this.Playing.get(2);
          World w = p.getWorld();
          double x = Double.parseDouble(coords[0]);
          double y = Double.parseDouble(coords[1]);
          double z = Double.parseDouble(coords[2]);
          Location loc = new Location(w, x, y, z);
          Tribute_three.teleport(loc);
          this.Frozen.add(Tribute_three);
          Tribute_three.setFoodLevel(20);
        }

ご覧のとおり、すべてのプレイヤーの if else はしごでそれぞれ新しい配列を作成する必要があります。48 の if ステートメントを作成する代わりに、coords 配列の変数名を変更して、配列の名前をインクリメントするカウンターを使用して for ループに入れる方法があります。わかりにくい説明でしたが、これが私にできる最善の方法です。

4

3 に答える 3

2

短い答えはイエスです。 のようString[][] playerCoordsに配列を宣言できますが、Mapインターフェイスを確認することをお勧めします。

于 2012-05-01T20:09:59.720 に答える
1

私があなたを正しく理解しているかどうかはよくわかりませんが、2 次元配列のようなことをしたいかもしれません。ここを見てください:

http://www.go4expert.com/forums/showthread.php?t=1162

次のように割り当てられます。

double[][] a2 = new double[10][5];
于 2012-05-01T20:08:08.613 に答える
0

構成変数の名前を変更できる場合は、コードを for ループでラップできます。

for (int i=1;i<numOfPlayers;i++) {
          String[] onecoords = this.config.getString().split(",");
          Player Tribute_i = (Player)this.Playing.get(i-1);
          World w = p.getWorld();
          double x = Double.parseDouble(onecoords[0]);
          double y = Double.parseDouble(onecoords[1]);
          double z = Double.parseDouble(onecoords[2]);
          Location oneloc = new Location(w, x, y, z);
          Tribute_i.teleport(oneloc);
          this.Frozen.add(Tribute_i);
          Tribute_i.setFoodLevel(20);
}

構成変数は、Tribute_1_spawn、Tribute_2_spawn などの名前になります... Player オブジェクトをさらに使用する必要がある場合は、それらを配列または他のデータ構造に保存できます。

于 2012-05-01T20:19:52.873 に答える