我正在玩双数组,我试图将数组的所有偶数元素设置为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)
答案 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!固定的。