将偶数设置为0,将奇数设置为1

时间:2014-09-13 18:39:54

标签: java arrays

我正在玩双数组,我试图将数组的所有偶数元素设置为0,并将数组的所有奇数元素设置为1.一切看起来都不错,但是当我运行它时我收到一堆错误。不确定是什么错的;我一直在看它,但没有运气。关于如何解决它给出的错误的任何建议都会很棒,谢谢!

代码:

public class SetOf0and1 {

    public static void main(String[]args)
    {

        int [][] numbers1 = {{4,2,5}, {2,4,1}, {1,3}};

        System.out.println("Before setting elements between 0 and 1: ");
        displayArray(numbers1);

        setEvenRowsTo0OddRowsTo1 (numbers1);
        System.out.println("After setting the elements between 0 and 1");
        displayArray(numbers1);

    }

    public static void setEvenRowsTo0OddRowsTo1(int [][]array)
    {
    for(int i=0; i<array.length;i++)
    {
        for(int j=0; j<array[i].length;j++)
        {
            if(i%2 == 0)
            array[i][j]=0;
            else
                array[i][j]=1;

    }
    }
}
    public static void displayArray(int [][]array)
    {
        for(int i=0;i<array.length;i++)
        {
            for( int j=0; j<array.length;j++)
            {
                System.out.println(array[i][j] + " " );
            }
            System.out.println();

    }

    }

}

错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at SetOf0and1.displayArray(SetOf0and1.java:38)
    at SetOf0and1.main(SetOf0and1.java:10)

5 个答案:

答案 0 :(得分:2)

public static void displayArray(int [][]array)
{
    for(int i=0;i<array.length;i++)
    {
        for( int j=0; j<array.length;j++)
                             ^^^^^^^^^
        {
            System.out.println(array[i][j] + " " );
        }
        System.out.println();
}

你的内部循环应该停在数组[i] .length。

答案 1 :(得分:2)

在方法displayArray中,行:

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

应该是:

for( int j=0; j<array[i].length;j++)

答案 2 :(得分:0)

array.length不会返回它的长度!你有一个2维阵列。因此,如果我们说您有array[x][y],那么array.length将为x,而array[i].length(对于0 <= i < x)将为y。这可能会有所不同,具体取决于该索引上数组的length。 (所以公式并不完全适用)

答案 3 :(得分:0)

int [][] numbers1 = {{4,2,5}, {2,4,1}, {1,3}};

此语句初始化一个数组,其中包含三个3,3和2的数组!!!

(在第三个区块中,您只有两个元素!!! - {1,3})

在你的displayArray方法中你使用两次......

array.length

...以区分循环的大小

将循环次数设置为3 ...但是最后一个块只有两个元素长 - &gt; errror。

使用此代替第二个循环:

for( int j=0; j<array[i].length;j++)

答案 4 :(得分:-1)

如果你想检查数字是否是奇数,你可以这样做:

int answer = thenumber % 2;

&#39;数量写&#39;是检查它是否为偶数的整数。 然后回答&#39;如果数字是偶数,则为0。

如果你想循环遍历数组并执行它:

for (int i = 0; i < numbers1.length(); i++)
{
if (numbers1[i] % 2 == 0) {
//EVEN
numbers1[i] = 0;
}
else if (numbers1[i] % 2 == 1) {
//ODD
numbers1[i] = 1;
}
}

而且,更紧凑:

for (int i = 0; i < numbers1.length(); i++)
{
numbers1[i] %= 2;
}

编辑:我忘了这是你的阵列!我在考虑ArrayList!固定的。