2011-07-29 18 views
0

に渡します。私は、Java言語のいくつかの基本原則や一般的なプログラミングが欠けていると思います。 2次元配列(2次元配列)に整数のテキストファイルを読み込んで2次元配列を別のクラスのメソッドに渡しましたが、そこから結果を出力するとすべて0になります。私は、これが基本的でシンプルなものであり、私が見落としているか、または気づいていないことがあります。私は、クラスマップでコードを読み込むのはここAndroidのJavaファイルを読み込み、結果をメソッド

は次のとおりです。私はクラス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; 
} 

は次のとおりです。 パブリッククラスAndroidMap {

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

問題は内部whileループでした。

+0

@semahanちょうど頭が上がって、あなたは自分の答えを受け入れられた答えとしてマークすることができます。あなたの答えを広げて、なぜその部分が間違っていたのかを説明してください。 –