2017-12-04 2 views
-1

Ich versuche, ein Array mit dem Namen positiveNumbersArray mit der Länge der Variablen positiveNumbers zu erstellen und dann die positiven Zahlen aus dem array darin zu speichern. Ich erhalte diese Fehlermeldung:Array Länge Deklaration mit Variable

ArrayIndexOutOfBoundsException: 5

int positiveNumbers=0; 

int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87}; 

for(int i = 0; i<array.length;i++) 
    if (array[i] > 0) 
     positiveNumbers++; 

int[] positiveNumbersArray = new int[positiveNumbers]; 

for(int i =0; i<array.length;i++){ 
    if (array[i] > 0) 
     positiveNumbersArray[i]=array[i]; 
} 
+2

Haben Sie jeden Versuch machen, die Ursache zu untersuchen? Das Hinzufügen von 'System.out.println (i);' zu Ihrer zweiten Schleife hätte Ihre Frage beantwortet. – VGR

Antwort

0

Das Problem ist, dass Sie einen separaten Index für positiveNumbersArray benötigen. Die einfachste Lösung ist:

positiveNumbers = 0; 
for(int i =0; i<array.length;i++) { 
    if(array[i] > 0) 
     positiveNumbersArray[positiveNumbers++]=array[i]; 
} 

Dadurch werden die Zahlen in die richtige Position in der positiveNumbersArray einfügen.

+0

Ich habe System.out.println (i) aber ich konnte nicht herausfinden, was falsch war, danke –

0

Die Größe des Arrays "Array" mehr als "PositiveNumbersArray" und Sie verwenden Index des Array "Array", um im Array "PositiveNumbersArray" zugreifen. Zum Beispiel: Größe von "Array" ist 15 und positive Werte zählen 6. Was
passiert, wenn Index des positiven Wertes in Array "Array" sind 8?

Versuchen Sie es:

int positiveNumbers = 0; 

    int[] array = {12, 0, -22, 0, 43, 545, -4, -55, 12, 43, 0, -999, -87}; 

    for (int i = 0; i < array.length; i++) { 
     if (array[i] > 0) 
      positiveNumbers++; 
    } 

    int[] positiveNumbersArray = new int[positiveNumbers]; 

    for (int i = 0, index = 0; i < positiveNumbersArray.length; i++, index++) { 

     while (array[index] <= 0) { 
      index++; 
     } 
     positiveNumbersArray[i] = array[index]; 
    }