2017-11-18 3 views
1

私は3次元配列を平坦化するコードセグメントに取り組んできましたが、次のコードではわずらわしい状況に遭遇しました。次のように初期化され使用3D多次元配列の出力が初期化データと一致しません

配列:

int array[][][] = { 
      { 
       {000, 001, 002}, 
       {010, 011, 012}, 
       {020, 021, 022}, 
      }, 
      { 
       {100, 101, 102}, 
       {110, 111, 112}, 
       {120, 121, 122}, 
      }, 
      { 
       {200, 201, 202}, 
       {210, 211, 212}, 
       {220, 221, 222}, 
      } 
    }; 

そしてループのための基本的なネストされたスルーアレイを出力します。 出力は、浮動小数点数を印刷できるカスタムDecimalFormatでフォーマットされています。

DecimalFormat xFormat = new DecimalFormat("000"); 


for(int z = 0; z < array[0].length; z++) { 
     for(int y = 0; y < array[1].length; y++) { 
      for(int x = 0; x < array[2].length; x++) { 
       System.out.println("I = "+ i + " Element at i = " + xFormat.format(array[z][y][x])); 
      } 
     } 
    } 

このループは、配列の初期化の直後に使用され、まだ出力が完全に私

I = 0 Element at i = 000 
I = 1 Element at i = 001 
I = 2 Element at i = 002 
I = 3 Element at i = 008 <------- =/= 010 
I = 4 Element at i = 009 <------- =/= 011 
I = 5 Element at i = 010 <------- =/= 012 
I = 6 Element at i = 016 <------- =/= 020 
I = 7 Element at i = 017 <------- =/= 021 
I = 8 Element at i = 018 <------- =/= 022 
I = 9 Element at i = 100 
I = 10 Element at i = 101 
I = 11 Element at i = 102 
I = 12 Element at i = 110 
I = 13 Element at i = 111 
I = 14 Element at i = 112 
I = 15 Element at i = 120 
I = 16 Element at i = 121 
I = 17 Element at i = 122 
I = 18 Element at i = 200 
I = 19 Element at i = 201 
I = 20 Element at i = 202 
I = 21 Element at i = 210 
I = 22 Element at i = 211 
I = 23 Element at i = 212 
I = 24 Element at i = 220 
I = 25 Element at i = 221 
I = 26 Element at i = 222 

にバッフルこれは私にはかなり基本思われるもので、まだ私は「何かわかりませんこの時点では行方不明です。ループの大部分が正しく出力されますが、真ん中にあるこの部分は正しく出力されず、多次元配列の問題の検索では解決方法があまり出ていません

答えて

0

0*(0プレフィックス)が使用されているため010は、バイナリを格納するAOD ***b0x*が進数を格納するために使用される同じように11等など9に、8進に変換swhy 番号(base8)

  {000, 001, 002}, //0,1,2 
      {010, 011, 012}, //8,9,10 
      {020, 021, 022}, //16,17,18 

を格納します。 DecimalFormatの値が8進数 010、つまり9になります。これが出力に表示されます。

残りの値は0で始まらないため、小数点以下は0です。他のすべての値に0を付けて、何が起こるかを確認することができます。

関連する問題