java二维数组,如何删除选中的行

时间:2013-05-25 12:03:16

标签: java arrays multidimensional-array

我真的很喜欢java,而且我已经用我知道的每一个可能的短语搜索了这个。

所以我有一个由36行和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                        
| . . . . . . . . . . . . |

我已将输出完成所有工作,但删除完整行无法正常工作

3 个答案:

答案 0 :(得分:0)

使用以下代码删除整行,您需要在第一个for循环内初始化count变量。

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.
  }

答案 1 :(得分:0)

您的count变量在for循环之外被初始化为零,只要它总共计算了12个元素而不是同一行中的12个元素,则count == 12为真。不确定这是否是所需的行为。如果只有在同一行中有12个元素时才应该为真,则应将count = 0放在 -loop外部的开头。

此外,当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;
    }
  }
}

答案 2 :(得分: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;
   }
  }
 }
}