Java Programmierung: Arraystelle auf existenz überprüfen?

...komplette Frage anzeigen

3 Antworten

Deine Abfrage ist auch nicht vollständig und falsch. Was ist wenn in einem Array-Element wirklich eine 0.0 steht und dort auch stehen soll?

eher if((x > 0 && y >0) && (x < 999 && y < 999)) return true;

Das gesamte Arry wird ja mit 0.0 vordefiniert, darauf zuzugreifen erzeugt aber keinen Fehler, das Element existiert ja, es hat mit 0.0 nur einen default wert. Nur darfst Du nicht mit z.B map[-1][0] oder map[1000][5] zugreifen.

Ich hab einen Fehler bei mir es soll jeweils nicht "<" sondern "<=" bzw. statt ">" ">=" heißen. Die 0 und die 999 sind ja inklusive. Bei "if(map[x][y] >= 0)" überprüfst Du aber nicht die Indizes sondern nur den Inhalt und das ist falsch und sorgt bei negativen Indizes für einen Fehler.

0

Ich entwickele seit 12 Jahren in Java, vorher 8 Jahre C++.

Dein Lösungsvorschlag hat mit Deiner Problemstellung wenig zu tun.

(1) Java wirft eine IndexOutOfBoundException, wenn versucht wird, auf einen Index ausserhalb des gültigen Bereiches zuzugreifen (im Beispiel 0..999). Diese Prüfung fehlt in Deinem Beispiel. Also zusätzlich vorher den Bereich prüfen:

if (posx >= 0 && posx < 1000 && posy >= 0 && posy < 1000) ...

(2) Falls Dein Problem jedoch ist, zu prüfen, inwieweit eine bestimmte Stelle in Deinem Array ungleich 0 ist, so muß diese Prüfung natürlich mit der in (1) beschriebenen kombiniert werden.

Also das Prüfen ob eine Variable belegt ist, sollte mit

if(object == null) {
    Fehler...
}

gehen. Damit sollte sich eigentlich auch die Array-Stelle checken lassen. Kenn mich allerdings mit Java nicht so aus (programmier hauptsächlich was anderes, wo das so geht, tut aber nix zur Sache).

Kann allerdings auch sein, dass Java gar keinen Zugriff auf eine nicht definierte Stelle zulässt. Dann wäre ein einfacher Check auf die posx und posy zielführend (zulässig jeweils nur: 0 bis 1000).

Es ist nur ein Array und in Java kannst Du gar keinen Zugriff außerhalb der Arraystelle machen. Also so was wie in C: int arr[9]; int x; und dann x = *(arr + 9); geht bei Java gar nicht. Java achtet auf die Grenzen

0

Was möchtest Du wissen?