如何处理二维数组中的特定行

时间:2014-04-26 18:22:46

标签: java

public class OutputRowsandColumns
{
  public static void main(String[] args) {
  int cols = 10;
  int rows = 10;
      int[][] myArray = new int[cols][rows];

// Two nested loops allow us to visit every spot in a 2D array.   
// For every column I, visit every row J.
    for (int i = 0; i < cols; i++)
      for (int j = 0; j < rows; j++)
        myArray[i][j] = 0;
  }
}

这是我到目前为止的代码,我的问题是;如何处理特定的偶数行和奇数行,将所有偶数行设置为0,将所有奇数行设置为1。

6 个答案:

答案 0 :(得分:1)

首先,您可以将阵列设置为

int myArray = new int[rows][cols]

然后处理它们,只需检查

for (int i = 0; i < rows; i++)
    for (int j = 0; j < cols; j++)
    {
        if(j % 2 == 0)            // even
            myArray[i][j] = 0;
        else                      // odd
            myArray[i][j] = 1;
    }
}

注意:在声明和for循环处理中切换arount行/ cols很重要,否则这将无法正常工作。如果我们以当前的方式进行,那么偶数列将设置为0,奇数列将设置为1而不是行。

答案 1 :(得分:1)

所有解决方案都建议您使用模数运算符。

这对某些情况很有用,但是知道int的默认值为0的事实,可以避免不必要的计算。

您所要做的就是修改for循环的参数,只考虑奇数行。

int[][] myArray = new int[rows][cols];

for (int i = 1; i < rows; i+=2)
    for (int j = 0; j < cols; j++)     
        myArray[i][j] = 1;

输出:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

答案 2 :(得分:0)

尝试模数;;

溶液:

for (int i = 0; i < cols; i++) {
      for (int j = 0; j < rows; j++){
        if((j % 2) == 0)
          //even
          myArray[i][j] = 0;
         else
          //odd
          myArray[i][j] = 1;
  }

   }

答案 3 :(得分:0)

for (int i = 0;i< cols;i++){
     for (int j=0;j<rows;j++){
         if (j%2==0){//even
             myArray[i][j] = 0;
         }
         else{
             myArray[i][j] = 1;
         }
    }
}

答案 4 :(得分:0)

行和列实际上是错误的方式,所以改变:

  int[][] myArray = new int[cols][rows];

为:

  int[][] myArray = new int[rows][cols];

然后写下:

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        if (i % 2 == 0){
            myArray[i][j] = 0;
        }
        else {
            myArray[i][j] = 1;
        }
    }
}

答案 5 :(得分:0)

下面的解决方案将为您提供稍微好一点的性能,因为它不会对列和行的每个组合使用条件语句。它为每一行使用一个条件语句。

int[][] myArray = new int[row][col];
for (int i = 0;i < row;i++){
    int val = 1;
    if (i % 2 == 0)
        val = 1;
    else 
        val = 0;
    for (int j = 0;j < col;j++){
         myArray[i][j] = val;
    }
}