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。
答案 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;
}
}