2017-07-08 38 views
1

2次元配列に文字列値を取り込もうとしています。2次元配列に文字列変数値を代入する方法

int m; n;行と列に割り当てるために私のループで使用されます。

内部ループでは、別の文字列配列から文字列を引き出し、各値を文字列変数に割り当てます。次に、その文字列変数を文字列の2次元配列に代入しようとしています。

文字列変数=特定のインデックスの文字列配列の文字列の値。

String[m][n] example = variable; 

文字列変数の文字列を2次元配列にロードしているようではないことを除いて、正常に動作しているようです。

なぜこのようなことが起こっているのか、どのようにして2dアレイにデータを正しく割り当てることができますか?

for(m = 0; m < people.size(); m++){ 
     for(n = 0; n < people.get(m).getNames().length; n++){ 

      for(int i = 0; i < people.size(); i ++){ 
       for(j = 0; j < people.get(i).getNames().length; j++){ 
        String name = people.get(i).getNames()[j]; 

       } 
     NamesGrid [m][n] = name; 

     } 
+0

内側ループについては、あなたのcurlybracketについては確かですか?そこにループ2がありますが、あなたは1を閉じますが、インデントは閉じていなければならない場所にはありません。また、なぜあなたは2d配列に代入する前にも、常にこれらの値を同じStringに代入していますか? –

+0

なぜ_four_ネストされたループですか? – ajb

答えて

0

2つのforループを使用して2dアレイを調べてみてください。ここでは、forループを通り、すべての要素に文字列を割り当てるサンプルコードを示します。 String [] [] names = new String [14] [10];

for(int rows = 0; rows < names.length; rows++) { 
     for(int cols = 0; cols < names[0].length; cols++) { 
      names[rows][cols] = "Strings!"; 
     } 
    } 

    for(int rows = 0; rows < names.length; rows++) { 
     for(int cols = 0; cols < names[0].length; cols++) { 
      System.out.print(names[rows][cols]); 
     } 
     System.out.println(); 
    } 
1

それはあなたが達成したいものだけを伝えるのは難しいです。一致しない中括弧を投稿したという事実は役に立ちません。

しかし、基本的に、すべての配列要素を取り込むために、ダブルは次のようになります。

、式で入力する必要が
for(m = 0; m < people.size(); m++){ 
    for(n = 0; n < people.get(m).getNames().length; n++){ 
     namesGrid[m][n] = ?????????; 
    } 
} 

。 (そして、計算の手助けのために割り当ての上にいくつかのコードを追加することもできます)

配列要素が割り当てられている時点でどのような情報がありますか? namesGrid配列の行と列は、mnであることがわかります。また、一部のpeopleオブジェクトのオブジェクトの「行」と「列」でもあるようです。 (people名前の複数のリストを持っているように見えます、とpeople.get(i)はあなたの名前のいずれかのリストを提供します?私はよく分からない。)

をしかし、我々はすでに、すなわちpeoplemnのために行番号と列番号を知っているので、我々それらを使用してpeopleのデータにアクセスできます。これを行うには、追加のforループは必要ありません。または、別の方法で見ると、namesGridのすべての要素を繰り返し処理する必要があり、people,をすべて反復処理する必要がありますが、2つの構造がほぼ同じであるため、同時にを反復処理しています形、言い換えると。 mnを使用してnamesGridを反復処理するとき、それらもpeopleを繰り返します。したがって、peopleを反復するために余分なループは必要ありません。

Soは、これら2つの追加ijループを取り除くと、名前だけを取得するためにmnを使用します。

String name = people.get(m).getNames()[n]; 

これはあなたが本当に望んでいない場合は、あなたの質問を編集して提供してください詳細はこちらまた、慣例による変数名はJavaで小文字で始まるので、私はnamesGridを私の答えで変更しました。

関連する問題