2012-11-20 49 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; 
     } 
    } 
}