2017-07-01 4 views
0

Ich versuche, eine einfache Funktion zu implementieren, die eine Nummer zu bestehenden Array hinzugefügt, aber ich bekomme einen Fehler im folgenden Code, eine Ausnahme ist genau bei Funktion addArrayToNumber in Zeile: "number + = NUMBERS_ARRAY [i] ". Ich möchte die Ausnahme nicht abfangen, nur den Code reparieren.Ausnahme im Thread, Funktion Nummer zum Array hinzufügen

public class Main { 

private static final int[] NUMBERS_ARRAY = {1, 2, 3, 4, 5}; 


public static final void main(String[] args) { 
    int x = addArrayToNumber(1); 
    System.out.println("X = " + x); 

    int y = addArrayToNumber(10); 
    System.out.println("Y = " + y); 

} 

private static int addArrayToNumber(int number) { 
    for (int i = 0; i <= NUMBERS_ARRAY.length; i++) { 
     number += NUMBERS_ARRAY[i]; /** here it is */ 
    } 

    return number; 
} 
+0

'for (int i = 0; i

+0

Solcher einfacher Fehler, danke. – Soothsayer92

+0

Bekam mich um 12s. Yup, die häufigsten Fehler sind die einfachen. Achten Sie auf die Stack-Trace, ich wette, dass es ArrayIndexOutOfBoundsException sagte, also sollten Sie Grenzen natürlich zuerst überprüft haben. – Luke

Antwort

1

Array von n Elementen hat Indizes 0, 1, ..., n-1. In Ihrer for-Schleife testen Sie jedoch i <= NUMBERS_ARRAY.length, was bedeutet, wenn das Array die Länge 5 hat, versuchen Sie auf NUMBERS_ARRAY [5] zuzugreifen, was offensichtlich nicht existiert. Verwenden Sie stattdessen i < NUMBERS_ARRAY.length, so Schleife

for(int i=0; i < NUMBERS_ARRAY.length; i++) 

wird Alternativ kann, wenn Sie alle Elemente sind Schleifen über Sie foreach-Syntax verwenden können, das heißt

for (int element : NUMBERS_ARRAY) { 
    number += element; /* add every element from NUMBERS_ARRAY to number */ 
} 

und denken überhaupt nicht über Indizes.

0

Sie erhalten IndexOutOfBoundsException hier, weil Feldlänge von 1 in Beispiel Array größer als im letzten Index haben Elemente [1,2,3] Indexierung geht von 0 und letzte Element erhalten müssen Sie Index 2, nicht 3, sonst bekommen Sie Ausnahme. Gemäß diesem Code korrekt Ihres durch ersetzen <=-<:

for (int i = 0; i < NUMBERS_ARRAY.length; i++) { 
     number += NUMBERS_ARRAY[i]; 
} 
Verwandte Themen