在Java中,我如何初始化一个数组,其中偶数列或行中的元素为0,而奇数列或行中的元素为1?

问题描述 投票:0回答:1

我正在做一个任务,我需要有两个1d的数组,将它们发送到另一个方法,然后制作一个2d的数组。然后我必须将数组传回主方法(所有这些我都已完成)。现在我必须通过使用for循环的方式打印出这个2d数组,使偶数行或列中的所有元素为0,而奇数行或列中的所有元素为1。我的代码打印的都是0。我的代码和输出如下。

numRowsnumColumns 是我用来制作的数组。oddEven.

for(int j = 0; j < numColumns.length; j++)
    {

        for(int i = 0; i < numRows.length; i++)
        {
            for(int a = 0; a < numColumns.length; a++) //tests for even number column
            {
                if(a % 2 == 0)  
                {
                    oddEven[j][i] = 0;
                }else {
                    oddEven[j][i] = 1;
                }
            }
            for(int b = 0; b < numRows.length; b++) //tests for even number row
            {
                if( b % 2 == 0)
                {
                    oddEven[j][i] = 0;
                }else {
                    oddEven[j][i] = 1;
                }
            }
            System.out.print(oddEven[j][i] + " ");

        }
        System.out.println();
    }   

/*
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0
*/

我知道如何打印出一个二维数组,但我不知道如何做我刚才所说的事情。

下面是输出的结果。


0 0 0 0 0
0 1 0 1 0
0 0 0 0 0 
0 1 0 1 0

java arrays 2d
1个回答
1
投票

写 oddEven[j][i] = (i%2)*(j%2)


0
投票

在现有的循环中,你不必要地遍历两个索引,这导致每个值都被设置为零,因为你正在使用 最后值.

你只需要最外层的两个循环。你可以这样简化你的代码。

for(int j = 0; j < numColumns.length; j++)
    {

        for(int i = 0; i < numRows.length; i++)
        {

            oddEven[j][i] = (j%2!=0&&i%2!=0)?1:0;

            System.out.print(oddEven[j][i] + " ");

        }
        System.out.println();
    }   

为了进一步解释,你的 a 循环是没有意义的,因为下面的 b 循环设置相同的值。循环的 oddEven[j][i] 对于任何 ji 的范围内,将根据 numRows.length - 1 中的最后一个值,因为这将是你的 b for循环。

使用一个 if 代替三元运算符

for(int j = 0; j < numColumns.length; j++)
    {

        for(int i = 0; i < numRows.length; i++)
        {
            if(j%2!=0&&i%2!=0){
                oddEven[j][i]=1;
            }
            else{
                oddEven[j][i]=0;
            }

            System.out.print(oddEven[j][i] + " ");

        }
        System.out.println();
    }   
© www.soinside.com 2019 - 2024. All rights reserved.