2016-12-22 56 views
0

我需要編寫的代碼將寫入數組中的所有負數和正數,我這樣做了,代碼的其他部分是寫所有重複的數字,他們重複多少次,它的工作原理,但它也寫錯誤,即時通訊新到Java,因此,如果任何人都可以用我的代碼幫助,謝謝我的代碼拋出一個ArrayIndexOutOfBoundsException

public static void main(String[] args) { 
     int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87}; 
     int cntPoz = 0, cntNeg = 0; 

     //for petlja broji pozitivne i negativne clanove array-a 
     for (int a = 0; a < array.length; a++) { 
      if (array[a] > 0) { 
       cntPoz++; 
      } else if (array[a] < 0) { 
       cntNeg++; 
      } 
     } 

     // kreiranje novih nizova 
     int[] pArr = new int[cntPoz]; 
     int[] nArr = new int[cntNeg]; 
     //for petlja iz array-a premjesta sve pozitivne brojeve 
     cntPoz = 0; 
     for (int i = 0; i < array.length; i++) { 
      if (array[i] > 0) { 
       pArr[cntPoz++] = array[i]; 
      } 
     } 

     //for petlja iz array-a premjesta sve negativne brojeve 
     cntNeg = 0; 
     for (int i = 0; i < array.length; i++) { 
      if (array[i] < 0) { 
       nArr[cntNeg++] = array[i]; 
      } 
     } 

     //sortiranje i ispis nizova 
     Arrays.sort(pArr); 
     Arrays.sort(nArr); 
     System.out.println("Originalni niz je : \n" + java.util.Arrays.toString(array) + "\n"); 
     System.out.println("Niz pozitivnih brojeva : \n" + java.util.Arrays.toString(pArr) + "\n"); 
     System.out.println("Niz negativnih brojeva : \n" + java.util.Arrays.toString(nArr)); 
     System.out.println(); 
     System.out.println(); 

     int[] arr2 = new int[array.length]; 
     Arrays.sort(array); 

     for (int i = 0; i < array.length; i++) { 
      arr2[i]++; 
      if (i + 1 < array.length) { 
       if (array[i] == array[i + 1]) { 
        arr2[i]++; 
        i++; 
       } 
      } 
     } 
     for (int j = 0; j<array.length; j++){ 
     for (int i = j+1; i < array.length; i++) { 
      if (arr2[i] > 0 && array[i]==array[i+1]) { 
       System.out.println("Duplikati su : "+array[i] + " i pojavljuju se " + arr2[i]); 
      } 
     } 
     System.out.println(Arrays.toString(array)); 
    } 

錯誤:

這是輸出:

Originalni niz je : 
[12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87] 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13 
Niz pozitivnih brojeva : 
[12, 12, 23, 43, 43, 545] 

Niz negativnih brojeva : 
[-999, -87, -55, -22, -4] 


Duplikati su : 0 i pojavljuju se 2 
    at assignment.Assignment.main(Assignment.java:65) 
Duplikati su : 12 i pojavljuju se 2 
Duplikati su : 43 i pojavljuju se 2 
C:\Users\User\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 
+1

請張貼錯誤的堆棧跟蹤中的問題 – GurV

+0

@GurwinderSingh – LjubisaK

+0

我更新了我的代碼,輸出是最後的 – LjubisaK

回答

3

我認爲錯誤是在這裏:

if (arr2[i] > 0 && array[i]==array[i+1]) { 

在最後一次迭代中,I + 1超過array的最大尺寸。

也許你想在前面的迭代,以使最後的比較,這樣停止循環:

for (int i = j+1; i < array.length - 1; i++) { 
+0

謝謝你現在的工作,非常感謝你 – LjubisaK

相關問題