Array: Feststellen ob nächstes Element existiert?

gamp

Mitglied
Hallo, hier mal mein Beispielcode, in meinem Programm hat der string "data" variable länge da es ein Buffer data = br.readLine() ist.

Code:
String data = "hallo ich bin dein test string";
//String data = "hallo ich bin dein test string irgendwashier";
String a[];

a = data.split(" ");
System.out.println("a[0]: "+a[0]);
for(int i = 1; i < a.length; i++) {
   System.out.printf("a[%d]: %s%n", i, a[i]);
}

if(a[5].compareTo("string") == 0 && a[6] != null)  {
    System.out.println(String.format("--%s%s--", a[5], a[6]));
}

Ich will jetzt quasi überprüfen ob zB a[6] existiert, welchen Wert es hat ist egal, jedoch MUSS es existieren, da der String "data" variable länge hat, hat das Array in Abhängigkeit davon mindestens 6 Elemente (a[0] bis a[5]) und maximal 20 (a[0] bis a[19]). Ich dachte "a[6] != null" tut den Job, jedoch krieg ich da auch schon eine ArrayIndexOutOfBoundsException.

Hat jemand ne Idee wie ich das möglichst geschickt überprüfen kann?

Mfg
 
Moin,

Du hast Dir doch den Grund für die Exception schon selbst hingeschrieben:

...
hat das Array in Abhängigkeit davon mindestens 6 Elemente (a[0] bis a[5]) und maximal 20 (a[0] bis a[19]).
Ich dachte "a[6] != null" tut den Job, jedoch krieg ich da auch schon eine ArrayIndexOutOfBoundsException
...

Wenn Du nur 6 Elemente hast, dann kannst Du eben a[6] auch nicht mehr ansprechen ...

Ich verstehe auch Dein Problem nicht wirklich, da Dir das a.length doch die gesuchte Anzahl an Elementen liefert :confused:

Gruß
Klaus
 
Oh mann, ich Vogel, ich hab solang an nem Problem in der Klasse gearbeitet das ich schon kein Auge mehr für die offensichtlichen Dinge habe!

Danke! Funkt prima.
 
Passt zwar nicht ganz hier ins Forum rein, aber ich schreibs mal für die Öffentlichkeit :D

Also 1. bin ich kein Bayer, sondern Kärntner... is vom Dialekt her zwar fast gleich, aber trotzdem ganz was anderes :D

2. Biergamasta is bei einem Dorffest bei mir zu Hause aufgekommen und is so eine alkoholische Anspielung auf den Bürgemeister (ich hab den Namen bekommen weil ich fürs Bier zapfen zuständig war)

Ich hoffe das klärt alle Unklarheiten :D

Gruß
 
Moin,

Also 1. bin ich kein Bayer, sondern Kärntner... is vom Dialekt her zwar fast gleich, aber trotzdem ganz was anderes :D
oha, ich wollte Dir auch nicht zu nahe treten, aber für uns hier im Norden ist schon alle südlich dem Ruhrgebiet Bayern :D

2. Biergamasta is bei einem Dorffest bei mir zu Hause aufgekommen und is so eine alkoholische Anspielung auf den Bürgemeister (ich hab den Namen bekommen weil ich fürs Bier zapfen zuständig war)
Ah ... jetzt ... ok, da wäre ich nüchtern nicht drauf gekommen ... na denn PROST :p

LG aus OS
Klaus
 
Ich hätte einfach geschrieben

Java:
try { System.out.println(String.format("--%s%s--", a[5], a[6])); }
catch ( ArrayIndexOutOfBoundsException e ) {}

Warum etwas prüfen, was vom System sowieso geprüft wird?
 
Ich hätte einfach geschrieben

java Code:
try { System.out.println(String.format("--%s%s--", a[5], a[6])); }

catch ( ArrayIndexOutOfBoundsException e ) {}




Warum etwas prüfen, was vom System sowieso geprüft wird?

Moin,

mal ganz davon abgesehen, dass Du doch hier auch prüfst ..... warum sollte ich die Existenz von hier a[6] prüfen wollen, wenn ich doch sowieso die Länge von a immer kenne :confused:

Da mir a.length doch immer die Anzahl der Elemente in a liefert, ist auch Dein try-catch flüssiger als flüssig (sprich: überflüssig) :p
Java:
if( a.length == 6 )
{
    // es existieren die Elemente a[0] bis a[5] ... mehr nicht ! ! !
}

Auf das gezielte Werfen einer Exception kann hier getrost verzichtet werden ;)

Gruß
Klaus
 
Zurück