2014-09-13 83 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++)