2012-11-20 2 views
0

업무에 착수합시다.개체 배열을 만들면 구문 오류가 발생합니다.

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

타일은 내가 때문에 배열을하고 싶은의 같은 프로젝트 및 패키지의 클래스가

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

일식 나에게 다음과 같은 오류를주고있다 : 나는이 코드 줄이 프로그램의 나머지 부분에서 일을 다른 방법으로 생각할 수 없다 ...

나는 google과 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

타일 클래스를 보여주십시오. – DaveFar

답변

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

당신은이 작업을 수행 할 수 사라 졌는지 지우기 린트 마커와 참조하십시오. 생성자에서 할당해야합니다. 초기화지정의 차이점을 읽으십시오.

필드의 초기화는 메서드 외부에 속하지만 물론 클래스에 의해 캡슐화됩니다.

과제는 방법에 속합니다.

또는과 같이 초기화 할 수 있습니다 :

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

그리고

+0

== 대신 .equals를 사용하는 점은 무엇입니까? – Dirk

+0

내 문제를 해결해 주셔서 감사합니다 BTW :) – Dirk

+0

== 문자열의 주소를 비교합니다. .equals를 사용하면 실제 문자열 값을 비교합니다. 그리고 np. –

0

레드 오류 메시지에 클릭, 당신은 '억제'를 보게 될 가능성이 높습니다 또는 '명확한 린트 마커'Eclipse는 때로는 오류를 기록하고 (입력 할 때) 마크를 지우지 않습니다. 오류가 클래스에

+0

이것은 십자가이므로 오류입니다. 또한, 아무 억압이나 아무것도 ... – Dirk

+0

'적십자'를 클릭하면 무엇이 표시됩니까? – Anshul

+0

토큰에 구문 오류가 있습니다. ","이 토큰 다음에 예상됩니다. – Dirk

1

이 완전한 클래스가 잘 작동 ==하지 .equals를 사용합니다. 수업 및 용도에 어떤 오류도 나타나지 않습니다.

여기에 전체 클래스는

가 이
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; 
     } 
    } 
} 
관련 문제