2009-03-07 4 views
5

existiert Wenn ich ein int Array wie folgt aufgebaut haben:Wie kann man überprüfen, ob ein Element in einem Array in Java

private int[][] map = new int[400][400]; 

Und ich versuche

map[100][200] 

abzurufen Und das Element nicht initialisiert , bekomme ich einen Compiler/Laufzeitfehler oder gibt es null zurück? Und gibt es eine Funktion, um zu überprüfen, ob ein bestimmtes Element/Index existiert/gesetzt wurde?

+1

Dieser Frage Titel könnte bearbeitet werden, um klarer zu sein – Casebash

+0

Bitte ändern Sie die title.wrack von Tym ..... –

Antwort

11

Da Ihre Array-Deklaration einen primitiven Typ hat, erhalten Sie keine Compiler- oder Laufzeitfehler - der Standardwert 0 wird zurückgegeben.

Wenn Ihr Array ein Array von Objekten gewesen wäre, würde das Array null für jedes nicht zugewiesene Element enthalten.

1

Nr

Ihre Array-Elemente sind nur groß genug int s zu halten, in diesem Fall. Es gibt keinen Ort, an dem Informationen darüber gespeichert werden können, ob das Element "existiert". Es wurde zugeteilt, also existiert es. In Java werden neu zugewiesene int Arrays für alle Elemente null initialisiert.

3

Ich werde null nicht zurückgeben, weil int ein primitiver Typ ist. Es wird der Standardwert int Wert zurückgegeben, der 0 ist.

Es gibt keine Möglichkeit zu wissen, ob ein Element gesetzt wurde, ohne ein separates boolesches Array zu haben.

+0

Wenn es ein Array einer benutzerdefinierten Klasse/Enum-Objekt wäre, würde es Null zurückgeben Wenn dieser Artikel/Index nicht festgelegt wurde? –

+0

@ Klicken Sie auf Upvote: Ja. –

0

Sie checkstyle verwenden können, pmd und findbugs auf Ihrer Quelle (findbugs auf dem binären) und sie werden Ihnen Dinge wie diese erzählen.

Leider sieht es nicht so aus, als würden sie dieses spezielle Problem auffangen (was sinnvoll ist, wenn das Array garantiert, dass jedes Element auf 0, null oder falsch gesetzt ist).

Die Verwendung dieser Tools kann Instanz- und Klassenmitglieder (die keine Arrays sind) abfangen, die verwendet werden, bevor sie einen Wert erhalten (ähnliche Art von Problem).

0

Etwas von einem toten Thema, aber ich habe es zufällig gefunden, also werde ich mein Stück Weisheit (oder was auch immer: P) legen. Sie können Arrays verwenden, um Ihr Array zu füllen, wenn es mit einem ungültigen Wert wie -1 erstellt wird. Dann können Sie leicht eine if x < 0, um zu überprüfen, ob Sie diese spezifische Array-Position initialisiert haben oder nicht. Nur eine Idee ...

Verwandte Themen