2014-09-13 43 views
0

我正在玩弄双数组,并试图将数组的所有偶数元素设置为0,并将数组中的所有奇数元素都设置为1。 ,但是当我运行它时,我收到了一堆错误。不知道有什么问题;我一直在寻找它一段时间没有运气。如何解决它提供的错误的任何建议将是非常好的,谢谢!甚至设置为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) 
+1

注意:如果'(ⅰ%2 == 0)阵列[i] [j] = 0; else array [i] [j] = 1;'可以写得更简单:'array [i] [j] = i%2;'' – assylias 2014-09-13 19:12:07

回答

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]。长度。

2

在该方法中displayArray,行:

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

应该是:

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

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

-1

如果你想检查一个数是奇数,你可以这样来做:

int answer = thenumber % 2; 

“数量写”是检查,如果它的整数甚至。 如果数字是偶数,那么'答案'就是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!固定。

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

这条语句初始化一个数组,其中有三条腿3,3和2!

(第三块你只有两个元素!!! - {1,3})

在你displayArray法使用两次......

array.length 

...以区分循环的大小

将循环数设置为3 ...但最后的块只有两个元素长 - > errror。

使用此代替用于第二循环:

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