2011-07-29 4 views
0

으로 전달됩니다. 자바 언어의 기본 원칙이나 일반적인 프로그래밍이 빠져 있다고 생각합니다. 정수로 텍스트 파일을 2 차원 배열로 읽어 들였고 (2 차원 배열로 잘 읽은 것 같습니다) 2 차원 배열을 다른 클래스의 메서드로 전달합니다. 그러나 거기에서 결과를 인쇄 할 때 나는 모두 0입니다. 나는 이것이 내가 간과하거나 알지 못하는 단순하고 기본적인 것이 었습니다. 내가 클래스 AndroidMap의 내용을 복사하려고 할 경우안드로이드 자바 파일을 읽는 결과가

다음
public void load() { 
    mapWidth = 40; 
    mapHeight = 32; 
    //int[][] baseLayer = new int[mapWidth][mapHeight]; 
    baseLayer = new int[mapWidth][mapHeight]; 
    try { 
     is = file.readAsset("maps/townMap.txt"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.d("android", "could not load file"); 
    } 
    scanner = new Scanner(is); 
    scanner.useDelimiter("[\\s,\r\n]+"); 
    try { 
     for (int i = 0; i < mapWidth; i++) { 
      for (int j = 0; j < mapHeight; j++) { 
       while (scanner.hasNext()) { 
        if (scanner.hasNextInt()) { 
         baseLayer[i][j] = scanner.nextInt(); 
        } 
       } 
      } 
     } 
    } finally { 
     scanner.close(); 
    } 
    testMap = new AndroidMap(mapWidth, mapHeight, baseLayer, tMapLayer2); 
    currentMap = testMap; 
} 

은 다음과 같습니다 : 나는 수업지도의 코드를 채울 경우 다음

는 {

int mapWidth; 
int mapHeight; 
int[][][] map; 

public AndroidMap(int mapWidth, int mapHeight, int[][] baseLayer, int[][]midLayer) { 
    this.mapWidth = mapWidth; 
    this.mapHeight = mapHeight; 
    map = new int[mapWidth][mapHeight][2]; 
    for (int i = 0; i < mapWidth; i++) { 
     for (int j = 0; j < mapHeight; j++) { 
      map[i][j][0] = baseLayer[i][j]; 
      map[i][j][1] = midLayer[i][j]; 
     } 
    } 
} 

}

+4

어레이를 채우고, 전달하고, 인쇄 한 구체적인 코드 중 일부는 SSCCE의 맛을 사용하는 것이 좋으며 실수를 더 잘 이해하는 데 도움이됩니다. 예를 들어 잘못된 참조를 전달하는 것일 수 있습니다. – BalusC

+0

기본적으로 안드로이드에 2 차원 배열을 권장하지 않습니다. 병렬 배열 2 개 또는 다른 데이터 구조로 이동해야합니다. – user802421

+0

네, 약간의 코드를 보는 것이 좋을 것입니다. 그래서 우리는 당신이 이것을하기 위해 사용했던 수업을 볼 수 있습니다. 그런 다음 우리가 사용하는 것을 알게되면 제안을 할 수 있습니다. – adamjmarkham

답변

0
공용 클래스 AndroidMap

문제는 내부 while 루프입니다.

+0

@semahan 그냥 머리를 위로, 당신은 자신의 대답을 허용 대답으로 표시 할 수 있습니다. 답변을 확대하기 위해 잠시 시간을내어 왜 그 부분이 잘못되었는지 설명하고 싶을 수도 있습니다. –

관련 문제