2012-11-20 52 views
0

讓我們來談談業務。我有這行代碼:創建一個對象數組會產生語法錯誤

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

這是給我下面的錯誤在Eclipse

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){ 

      } 
     } 
    } 
+1

你能發佈一些更多的代碼?問題似乎並不在此線上。 –

+0

聲明看起來不錯 – manix

+0

請向我們展示您的Tile類。 – DaveFar

回答

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

你不能做到這一點在你的類。你需要在你的構造函數中分配它。 閱讀初始化賦值之間的差異。

字段的初始化屬於一個方法外,但當然是由一個類封裝。

賦值屬於一種方法。

,或者你可以初始化像這樣:

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

而且使用.equals沒有==

+0

使用.equals而不是==的用途是什麼? – Dirk

+0

感謝您解決我的問題順便說一句:) – Dirk

+0

==比較字符串的地址。使用.equals比較實際的字符串值。和np。 –

0

點擊紅色的錯誤消息,最有可能你會看到「禁止」或'清除棉絨標記'Eclipse有時會記錄一個錯誤(如鍵入)並且不會清除標記。 清除棉絨標記,看看錯誤消失

+0

這是一個紅十字,所以這是一個錯誤。此外,沒有壓制或任何東西...... – Dirk

+0

當您點擊「紅十字」時會顯示什麼? – Anshul

+0

令牌上的語法錯誤「;」,{預計在此令牌之後 – Dirk

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; 
     } 
    } 
}