0

私はJavaが初めてで、私が知っているすべての可能なフレーズでこれをグーグルで検索しました。

だから私は36行と12列で作られたテーブルを持っています.私は行がいっぱいになると行を削除し、すべてを1つ下に移動するメソッドを書き込もうとしています.スペースを最大 12 個追加してから内容を削除しますが、ランダムに削除するか、まったく削除しないようです。誰も Java 初心者を助けることができますか

int count = 0;
for (int i = 0; i < 36; i++){
 for (int j = 0; j < 12; j++){
  if (table[i][j] != null){
   count++;
  }

  if (count == 12){
   table[i][j] = null;
  }
 }
}

編集:うーん、提案されたすべての回答を試しましたが、どれも機能していないようです。何をしようとしていて、このように出力します

| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| 1 . . 3 . . . . 5 . . . |        < this line should take its place              
| a b c d e f g h i j k l |        < this line should delete               
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| x y . r f s . . . . . . |   < this line should move down one                   
| 1 2 3 4 5 6 7 8 9 0 . . |   < this line should move down one             
| A B C D E F G H I J K L |   < this line should delete                
| . . . . . . . . . . . . |

そして以下の出力

| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                 
| 1 . . 3 . . . . 5 . . . |       < this line just moved down
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |                       
| . . . . . . . . . . . . |  
| . . . . . . . . . . . . |                     
| x y . r f s . . . . . . |   < this line just moved down one                
| 1 2 3 4 5 6 7 8 9 0 . . |   < this line just moved down one                        
| . . . . . . . . . . . . |

すべての作業への出力を取得しましたが、行全体を削除しても機能しません

4

3 に答える 3

0

count以下のコードを使用して行全体を削除し、最初の for ループ内で変数を初期化する必要があります。

for(int i = 0; i < 36; i++)
{
  count = 0;
 //your procession logic
}

if (count == 12)
   {
       table[i]= null;// this will delete/nullify row
      }

あなたのコード

 if (count == 12){
   table[i][j] = null; // this will delete/nullify element j of i only.
  }
于 2013-05-25T12:06:04.170 に答える
0

変数countは for ループの外でゼロに初期化さcount == 12れ、同じ行の 12 要素ではなく、合計 12 要素をカウントしたときはいつでも true になります。これが望ましい動作かどうかはわかりません。同じ行に 12 個の要素がある場合にのみ true になる必要がある場合count = 0は、外側のforループの先頭に配置する必要があります。

また、が true の場合、行全体ではなくcount == 12(i,j) エントリを設定します。nullコードは次のようになるはずです。

int count;
for(int i = 0; i < 36; i++)
{
  count = 0;
  for(int j = 0; j < 12; j++)
  {
    if(table[i][j] != null)
    {
      count++;
    }

    if(count == 12)
    {
      table[i] = null;
    }
  }
}
于 2013-05-25T12:16:32.860 に答える
0

これを試して:

int count = 0;

for (int i = 0; i < 36; i++){
 for (int j = 0; j < 12; j++){
  if (table[i][j] != null){
   count++;
  }

  if (count == 12){
   if (i<=35)
   {
      //Initialize temp to a array like TableType[] temp = new TableType[12];
      // move i to i+1 row
      table[i+1] = table[i];
      table[i] = temp;
   }
  }
 }
}
于 2013-05-25T12:20:47.257 に答える