2016-07-05 12 views
0

1から16までのシャッフルされていないリストと2次元配列を持っています。私は何をしようとしていますか?btn [3] [3]Java - リストから正しい番号を割り当てよう

int c = 0; 
    int v = 0; 
    for (int i=0; i<4; i++) { 
     v=0; 
     for(int j=0; j<4; j++){ 


      String number = Integer.toString(list.get(c)); 
      c++; 

      if (i == 3 && j == 3){ 
       JButton btnmix = new JButton(); 
       btnBotonMix[i][j] = btnmix; 
       btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90); 
       btnBotonMix[i][j].setText(number); 
      } 

      else{ 
       JButton btnmix = new JButton(); 
       btnBotonMix[i][j] = btnmix; 
       btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90); 
       btnBotonMix[i][j].setText(number); 
      } 

      v = v + 90; 
     } 
    } 

私が探している何を、常に私のインデックスBTNに番号16を割り当てることです: - (15 1)

コード、他のすべての位置は、他の残りのリスト値を持つことができます[3] [3]

だから私はこれを得たいと思っています(数字16は[3] [3] lのランダムな位置に残っているもの):

[0][0] 15 
[0][1] 11 
[0][2] 14 
[0][3] 5 
[1][0] 12 
[1][1] 3 
[1][2] 8 
[1][3] 9 
[2][0] 6 
[2][1] 2 
[2][2] 13 
[2][3] 1 
[3][0] 4 
[3][1] 7 
[3][2] 10 
[3][3] 16 
+1

とあなたの問題がありますか?助けを得るためには、期待される振る舞い、実際の振る舞い、スタックトレース、そしてここで間違っているものを含めることができます。あなたがどこにいるのか、その理由を特定するのに役立つすべてのもの。 – SomeJavaGuy

+0

ifブロックとelseブロックは同じですが、正確に何を達成しようとしていますか? – dty

+0

ちょっとした詳細を追加しました – BrianCas

答えて

1
// always put 16 last 
    final int lastNumber = 16; 
    // take it out from the list from the start 
    list.remove(Integer.valueOf(lastNumber)); 
    for (int i = 0; i < 4; i++) { 
     v = 0; 
     for (int j = 0; j < 4; j++) { 

      String number; 
      if (i == 3 && j == 3) { 
       number = Integer.toString(lastNumber); 
      } else { 
       number = Integer.toString(list.get(c)); 
       c++; 
      } 

      JButton btnmix = new JButton(); 
      btnBotonMix[i][j] = btnmix; 
      btnBotonMix[i][j].setBounds(70 + 90 * (i % 10), v + 90 * (i/10), 90, 90); 
      btnBotonMix[i][j].setText(number); 

      v = v + 90; 
     } 
    } 
0

これを試してみて、私に知らせてください -

int c = 0; 
     int v = 0; 
    Arrays.sort(list);//added 
     for (int i=0; i<4; i++) { 
      v=0; 
      for(int j=0; j<4; j++){ 


      String number = Integer.toString(list.get(c)); //Changed 
      c++; 
if (i == 3 && j == 3){ 
      JButton btnmix = new JButton(); 
      btnBotonMix[i][j] = btnmix; 
      btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90); 
      btnBotonMix[i][j].setText(number); 
     } 

     else{ 
      JButton btnmix = new JButton(); 
      btnBotonMix[i][j] = btnmix; 
      btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90); 
      btnBotonMix[i][j].setText(number); 
     } 

     v = v + 90; 
    } 
} 

私は他の場合は、ここで必要になり、今はないと思います。

0

最も簡単な方法は、検索数が16である場合は、位置に到達したときに確認することである[3] [3]

int c = 0; 
    for (int i=0; i<a.length; i++) { 
     for(int j=0; j<a.length; j++){ 
      String number = list.get(c); 
      c++; 
      JButton btnmix = new JButton(); 
      btnBotonMix[i][j] = btnmix; 
      btnBotonMix[i][j].setBounds(70+90*(i%10),v+90*(i/10),90,90); 
      if (i == 3 && j == 3){ 
       if(number.equals("16")){ 
        btnBotonMix[i][j].setText(number); 
       } 
      } 
      else{ 
       btnBotonMix[i][j].setText(number); 
      } 
     } 
    } 
関連する問題