0

ただビジネスに取り掛かりましょう。私はこのコード行を持っています:

    public static Tile[] tiles = new Tile[400];

これは私に日食で次のエラーを与えています

    Syntax error on token ";", { expected after this token

タイルは同じプロジェクトとパッケージのクラスであり、プログラムの残りの部分で他の方法を考えることができないため、配列を作成したいと思います...

私はグーグルとstackoverflowを調べましたが、答えが見つかりません。誰かが私が間違っていることを私に説明できますか?

よろしくお願いします、Dirk。

編集:これがタイルクラスです:

    package com.mrdls.invade;

    public class Tile {

        public String name = "";
        public int id = 0;
        public boolean passable = false;

        public Tile(String name, int id){
            this.name = name;
            this.id = id;

            if(name == "air"){
                passable = true;
            }
        }
    }

EDIT2、これがTilesBlocksクラスです

    package com.mrdls.invade;

    import java.awt.image.BufferedImage;

    import javax.imageio.ImageIO;

    public class TilesBlocks {

        public static BufferedImage tilesetBlocks;

        public static int pixelsPerTile = 20;

        public int[] ints = new int[20];

        public Tile[] tiles = new Tile[400];

        tiles[0] = new Tile("air", -1);
        /*public static final Tile earth = new Tile("earth", 0);
        public static final Tile stone = new Tile("stone", 1);
        public static final Tile cobblestone = new Tile("cobblestone", 2);
        public static final Tile sand = new Tile("sand", 3);
            public static final Tile sandstone = new Tile("sandstone", 4);
        public static final Tile grass = new Tile("grass", 5);
        public static final Tile woodLog = new Tile("log", 6);
        public static final Tile leaves = new Tile("leaves", 7);
        public static final Tile pumpkin = new Tile("pumpkin", 8);
        public static final Tile melon = new Tile("melon", 9);
        public static final Tile pumpkinCarved = new Tile("carved pumpkid", 10);

        public static final Tile copperOre = new Tile("copper ore", 20);
        public static final Tile tinOre = new Tile("tin ore", 21);
        public static final Tile ironOre = new Tile("iron ore", 22);
        public static final Tile silverOre = new Tile("silver ore", 23);
        public static final Tile goldOre = new Tile("gold ore", 24);

        public static final Tile diamondOre = new Tile("diamond ore", 40);
        public static final Tile emeraldOre = new Tile("emerald ore", 41);
        public static final Tile rubyOre = new Tile("ruby ore", 42);
        public static final Tile sapphireOre = new Tile("sapphire ore", 43);*/

        public TilesBlocks(){
            try{
                TilesBlocks.tilesetBlocks = ImageIO.read(Tile.class.getResourceAsStream("/tileset_terrain.png"));
            }catch(Exception e){

            }
        }
    }
4

3 に答える 3

1
        tiles[0] = new Tile("air", -1);

クラスでこれを行うことはできません。コンストラクターで割り当てる必要があります。初期化代入の違いを読んでください。

フィールドの初期化はメソッドの外部に属しますが、もちろんクラスによってカプセル化されます。

割り当てはメソッドに属します。

または、次のように初期化できます。

Tiles []tiles = new Tiles[]{new Tile("air",-1)} ;

そして、.equalsnot==を使用します

于 2012-11-20T16:27:32.213 に答える
1

この完全なクラスは正常に機能します。クラスと使用法にエラーはありません。

これが完全なクラスです

package com.test;

public class Tile {

    public static Tile[] tiles = new Tile[400];

    public String name = "";
    public int id = 0;
    public boolean passable = false;

    public Tile(String name, int id) {
        this.name = name;
        this.id = id;

        if (name.equals("air")) {
            passable = true;
        }
    }
}
于 2012-11-20T16:31:09.077 に答える
0

赤いエラーメッセージをクリックします。「抑制」または「リントマーカーのクリア」が表示される可能性があります。Eclipseは(入力時に)エラーを記録し、マークをクリアしない場合があります。Lintマーカーをクリアして、エラーがなくなったかどうかを確認します

于 2012-11-20T16:17:39.260 に答える