2016-10-01 9 views
-5

Ich habe eine Frage, die Indizes zu lesen und zu prüfen, ob es leer ist und wenn es ist und es an einer Position größer als oder gleich 67 ist (beginnend von 0), muss ich ausdrucken das Element befindet sich am Index i-67. Das Problem, das ich habe glaube ich, wird überprüft, ob ein Index etwas enthältWie überprüft man, ob ein Arraylist-Index leer ist

for(int i = 0; i <= s.size()-1; i++){ 
    if(s.get(i) == null && i >= 67) 
     w.println(s.get(i-67)); 
    } 

ich an anderer Stelle gelesen, dass vielleicht ein hashtable besser wäre, dies zu tun, aber ich für das Leben von mir kann nicht verstehen, warum.

+0

Laufzeitfehler, Compilerfehler, falsche Datenausgabe, bitte angeben. – Murillio4

+1

'i <= s.größe() - 1;' wirklich? – FredK

+0

Sorry, falsche Datenausgabe war mein Problem, da es nie erkennen würde, wenn ein Index leer war. @FredK ja was ist damit? Wie auch immer ich eine Lösung zu meiner Frage gefunden habe, offenbar habe ich die falsche Datenstruktur für das Problem verwendet. Auch wenn jemand interessiert, den Grund zu wissen, der es nicht aufheben würde, war, weil Zeichenfolgen kein primitiver Datentyp sind, also würden Sie tun müssen, wenn (s.get (i) .equals (Null)) , um das korrekte zu erhalten Ergebnis! Danke allen! – Tdlk

Antwort

0

Die Verwendung von if(s.get(i) == null) funktioniert nicht, und die Methode get() löst eine Ausnahme aus, anstatt null zurückzugeben.

Sie müssen die Ausnahme fangen, benutzen Sie diese:

try { 
    s.get(i); 
} catch (IndexOutOfBoundsException e) { 
    s.add(i, new Object());//Add something to fill this position. 
} 

Wenn der Arraylist in der i Position ist null (leer), den Code fangen die Ausnahme und man kann etwas hinzufügen, diese Position zu füllen. Sie haben nicht angegeben, um welchen Typ es sich bei Ihrem Arraylist handelt.

Verwandte Themen