2016-10-18 10 views
0

オブジェクトの4×3配列を反復して、各オブジェクトの値をユーザー入力に応じて設定しようとしていますが、配列全体の反復は、合計12ではなく6で終了します。イテレータを書くにはいくつかの方法を試しましたが、それらは常に失敗します。これがコードです。なぜ私のループは早く終了し、配列を反復するとき

Card[][] field = new Card[3][2]; 
    void setvals(){ 
     Scanner scanner = new Scanner(System.in); 
     for(int row= 0; row < field.length; row++){ 
      for(int col = 0; col < field[row].length; col++) { 
       String input = scanner.nextLine(); 
       field[row][col] = new Card(); 
       field[row][col].makeCard(input); 
      } 
     } 
    } 

私はまた、=の代わり< <を試みたが、それは範囲外の私の配列のインデックスを提供します。私は問題が何かを知りません。

+2

3x2アレイを作成していますが、その中に12個のものがあるはずです。 – azurefrog

+2

Ummmm、フィールドは3 by 2で、4 by 3ではありません。配列のインデックスに混乱する配列サイズですか? – rtpax

+2

あなたのための誤解。あなたは4×3の配列を持っていません。あなたのものは3x2なので、6要素です。だから質問を削除して移動する;-) – GhostCat

答えて

1

あなたの問題は、配列である:

Card[][] field = new Card[3][2]; 

あなたは配列を4 x 3になりたい、そしてように寸法を設定します。

Card[][] field = new Card[4][3]; 

あなたのコードが動作しない理由は、以降であります現在、2 x 3の配列があり、6回の反復で評価されています。 4 x 3配列は、必要に応じて反復回数を12回評価します。

+0

ありがとうございました。それは私が元々持っていたものですが、私の先生は、配列が0で始まるので、実際には3X2だったと私に言った。私は今、どのように愚かな音がしているのか理解している。 –

+0

@LightningJimmyJoeJohnsonこの回答が正しいと分かった場合は、答えの横にある緑色のチェックマークアイコンをクリックして、正しいとマークしてください。これは、この質問の今後の尋問者が再度尋ねないようにするためであり、ソリューションがあなたのために働いたことを容易に確認できます。 –

+0

私はチェックをマークする前に私は数分待つ必要があると私に言って、スタックオーバーフローを忘れて、私はちょっと後にそれについて忘れてしまった。うそつき –

1

あなたは言う:

だから私は、オブジェクトの4×3配列を反復処理しようとしています...

そして、ここでは、あなたの配列です:Card[][] field = new Card[3][2];

これは4x3アレイではありません。これは3x2配列です。つまり、ループ内に6回の繰り返しが必要です。これは何が起きているかを示します。ここにはエラーはありません。

関連する問題