2017-06-08 3 views
-1
String[][][] arr = 
{{ { "a", "b" , "c"}, { "d", "e", null } },{ {"x"}, null },{{"y"}},{ { "z","p"}, {} }}; 

私はこのようなものは、最終的に試験に出てくるために起こっているが、コーディングの10年間で、私はそのような恐怖を見たことがないことを信じる理由をしました。私は精神的にこれを解析するためのいくつかのヒントを使用することができるので、私は本当に頭の中で何を意味するのか理解することができます。確かに、私はIntelliJを介して実行することができますが、私はそれを利用することはできません。レコードのこのJava配列を読み込む(理解する)にはどうすればよいですか?

、これは私には完璧な意味があります:

int[][] twoD = { { 1, 2, 3} , { 4, 5, 6, 7}, { 8, 9, 10 } }; 
+1

を参照してください。試験では、基本的な知識を使ってこのようなパズルを解明しようとします。誰もそのようなことをコード化することはまずありません。 – duffymo

+0

複数のフロアと複数の部屋を持つASCIIローグライクゲームを想像してみてください。各部屋には、オブジェクトやクリーチャーのための単一の文字列として表現される可能性のあるオブジェクトが含まれています。そしてあなたはゲームマップの状態を保存したかったのです。この構造はそうするための一つの方法です。 – Novaterata

答えて

4

私はあなたがこのネストされた配列のどのレベルで何を追跡するのに役立ちますいくつかのインデントを、追加することをお勧めします:

String[][][] arr = { 
    { 
     { "a", "b", "c" }, 
     { "d", "e", null } 
    }, 
    { 
     { "x" }, 
     null 
    }, 
    { 
     { "y" } 
    }, 
    { 
     { "z", "p" }, 
     {} 
    } 
}; 

それは役に立ちますか?これにより、データ構造を視覚化したり、「arr[1][0][0]の値は何ですか?」といった質問に簡単に答えることができます。

あなたは、おそらく「文字列の三次元配列を」「文字列の配列の配列の配列」とタイプString[][][]を読み取ったりすることができ

+0

かもしれません。私は自分自身でそれをやろうとしていて、とても素早く迷子になった。もう一度やり直します。 – user447607

+0

@smarx、私はいくつかの解説と読解の例を追加するためにあなたの答えを編集すべきかどうか分からないので、代わりに答えを書いた。 –

0

アレイは0,0でrowsとcols

String[][][] arr = 
{ 
    {{"a", "b" , "c"}, {"d", "e", null} }, 
    {{"x"   }, null    }, 
    {{"y"   }     }, 
    {{"z", "p"  }, {    }} 
}; 

2 Colsは、4行

要素のマトリックスとしてということを把握するのに役立ちますフォーマット:{"a", "b" , "c"}

素子0,1時:1,0で{"d", "e", null}

要素:{"x"}

1,1で

要素:null

などなど

2

たぶん、あなたは、私はこのようなあなたの配列を参照することができ、より本から理解する:と同等です

String[] arr0 = {"a", "b", "c"}; 
String[] arr1 = {"d", "e", null}; 
String[] arr2 = {"x"}; 
String[] arr3 = null; 
String[] arr4 = {"y"}; 
String[] arr5 = {"z", "p"}; 
String[] arr6 = {}; 

String[][] arr0_1 = {arr0, arr1};//-->> {{"a", "b", "c"}, {"d", "e", null}} 
String[][] arr2_3 = {arr2, arr3};//-->> {{"x"}, null} 
String[][] arr4_4 = {arr4};  //-->> {{"y"}} 
String[][] arr5_6 = {arr5, arr6};//-->> {{"z", "p"}, {}} 

String[][][] arr = {arr0_1, arr2_3, arr4_4, arr5_6}; 

String[][][] arr 
     = { 
      {//---------------------------- 
       {"a", "b", "c"},//arr0 | 
             //|---->arr0_1 
       {"d", "e", null}//arr1 | 
      },//--------------------------- 

      {//---------------------------- 
       {"x"},//arr2    | 
             //|---->arr2_3 
       null //arr3    | 
      },//--------------------------- 

      {//---------------------------- 
       {"y"}//arr4    |---->arr4_4 
      },//--------------------------- 

      {//---------------------------- 
       {"z", "p"},//arr5   | 
             //|---->arr5_6 
       {}//arr6     | 
      }//--------------------------- 
     }; 
0
String[][][] arr = { 

      // arr[0] 
      { 
        /* arr[0][0] */ 
        { 
          /* arr[0][0][0] */ "a", 
          /* arr[0][0][1] */ "b", 
          /* arr[0][0][2] */ "c" 
        }, 

        /* arr[0][1] */ 
        { 
          /* arr[0][1][0] */ "d", 
          /* arr[0][1][1] */ "e", 
          /* arr[0][1][2] */ null 
        } 
      }, 

      // arr[1] 
      { 
        /* arr[1][0] */ 
        { 
          /* arr[1][0][0] */ "x" 
        }, 

        /* arr[1][1] */ 
        null 
      }, 

      // arr[2] 
      { 
        /* arr[2][0] */ 
        { 
          /* arr[2][0][0] */ "y" 
        } 
      }, 

      // arr[3] 
      { 
        /* arr[3][0] */ 
        { 
          /* arr[3][0][0] */ "z", 
          /* arr[3][0][1] */ "p" 
        }, 

        /* arr[3][1] */ 
        {} 
      } 
    }; 
@smarx答えに
0

ビル:私たちは何かにアクセスしようとしているため

// [][][] is an array of 2D arrays 
String[][][] arr = { // begin declaration of arr 
    // first 2D array 
    { 
     {"[0][0][0]", "[0][0][1]", "[0][0][2]"}, 
     {"[0][1][0]", "[0][1][1]", null, "[0][1][3]"} 
    }, 
    // second 2D array 
    { 
     {"[1][0][0]", "[1][0][1]"}, 
     null // we should check for this when reading 
    }, 
    // third 2D array 
    { 
     {"[2][0][0]", "[2][0][1]", "[2][0][2]"} 
    }, 
    // fourth 2D array 
    { 
     {"[3][0][0]", "[3][0][1]"}, 
     {} 
    }, 
    // fifth 2D array 
    { 
     {"[4][0][0]", "[4][0][1]", "[4][0][2]"}, 
     {"[4][1][0]", "[4][1][1]"}, 
     {"[4][2][0]", "[4][2][1]", "[4][2][2]"} 
    } 
}; 

// Reading the 3D array, as: [x][y][z] 
for (int x = 0; x < arr.length; x++) { 
    for (int y = 0; y < arr[x].length; y++) { 
     // one of our 2D arrays has a null array, 
     // declared in the line: {"[0][1][0]", "[0][1][1]", null, "[0][1][3]"} 
     if (arr[x][y] != null) { 
      for (int z = 0; z < arr[x][y].length; z++) { 
       System.out.println(arr[x][y][z]); 
      } 
     } else { 
      System.out.println("null 2D array"); 
     } 
    } 
} 

は、我々がnullの配列をチェックしなければならないし、それが存在しません。印刷するときにJavaがすでにこのチェックを行いますので、NULL文字列(印刷用)をチェックする必要はありません、それは文字列のmatricies(2D配列)の配列ですwhy null reference prints as "null"?

関連する問題