# Alle Array-Elemente auf einmal überprüfen?



## HelloJava (11. Dez 2010)

Hallo, gibt es eine Möglichkeit mit if alle Elemente eines Arrays auf einmal zu überprüfen ohne eine for-Schleife benutzen zu müssen?

Zum Beispiel so:


if ( array [ n +1 ] == 0 ) {

...alle Elemente haben den Wert "0"!

}


----------



## Final_Striker (11. Dez 2010)

Nö

Was hast du gegen for-Schleifen? =)

Edit:

Ok, du könntest [c]Arrays.binarySearch(int [] a, int key)[/c] benutzen. Die Methode liefert die -1 wenn sich kein Key im übergeben Array befindet.


----------



## newbie2009 (11. Dez 2010)

while schleife? was ist denn deine absicht


----------



## eRaaaa (11. Dez 2010)

Final_Striker hat gesagt.:


> Ok, du könntest [c]Arrays.binarySearch(int [] a, int key)[/c] benutzen. Die Methode liefert die -1 wenn sich kein Key im übergeben Array befindet.



Damit stellst du aber nicht sicher dass alle Elemente dem Key entsprechen 
------
"Nö" stimmt schon, aber mit ein paar Tricks kann man da immer etwas tricksen, kommt allerdings auch auf das Array an.
Wenn du beispielsweise ein Integer-Array anstelle von einem int Array (also keine primitiven) benutzt, könntest du

```
Collections.frequency(Arrays.asList(array), 0) == array.length
```
testen.

Wieso verwendest du nicht lieber direkt etwas aus dem Collection Framework?


----------



## Final_Striker (11. Dez 2010)

eRaaaa hat gesagt.:


> Damit stellst du aber nicht sicher dass alle Elemente dem Key entsprechen
> ------



Ja, klar stimmt. Hab gerade in die falsche Richtung gedacht. ^^


----------



## HelloJava (11. Dez 2010)

Meine Absicht war folgende:

boolean alleElementeSindNull ;

if ( array [ n +1 ] == 0 ) {

alleElementeSindNull = true ;

}
else {

alleElementaSindNull = false ;

}

Wenn ich das in eine for-Schleife einsetze und das letzte Element des Arrays den Wert "0" hat, dann wird die Variable "alleElementaSindNull" auf true gesetzt, auch wenn alle anderen Elemente nicht "0" sind.

Beispiel:


boolean alleElementeSindNull ;

for ( int i = 0 ; i <= n ; i++ ) {

if ( array [ i ] == 0 ) {

alleElementeSindNull = true ;

}
else {

alleElementaSindNull = false ;

}
}


----------



## XHelp (11. Dez 2010)

Ne, das geht so nicht. Du musst in der Schleife nur 1x den Wert setzen und zwar wenn das Element !=0 ist:

```
boolean allNull = true;
for (int i=0;i<a.length;i++) {
  if (a[i]!=0) {
    allNull = false;
  }
}
```

Was ist bei dir n? Wenn es Länge des Array ist, dann kriegst du eine IndexOutOfBoundsException


----------



## Gast2 (11. Dez 2010)

```
boolean alleElementeSindNull = true;

for (int i = 0 ; i < array.length ; i++) {
    if (array[i] != 0 ) {
        alleElementeSindNull = false;
        break;
    }
}
System.out.println("Alle elemente sind null: " + alleElementeSindNull");
```


----------



## HelloJava (11. Dez 2010)

Vielen dank euch beiden!

Auf die Lösung bin ich irgendwie überhaupt nicht gekommen, obwohl so simpel!

n ist eine beliebige Zahl.

Bye


----------



## tagedieb (12. Dez 2010)

Wenn deine Booleans begrenzt sind koenntet du auch eine Bit Operationen verwenden.


```
int flag = 0;
		System.out.println(flag);
		System.out.println("NO flags set: " + (flag==0));
		flag |= 1 << 3;
		System.out.println("set flag 3: " + flag);
		flag |= 1 << 4;
		System.out.println("set flag 4: " + flag);

		System.out.println("check flag 4: " + ((flag & 1 << 4) == 1 << 4));
		System.out.println("check flag 5: " + ((flag & 1 << 5) == 1 << 5));
		System.out.println("NO flags set: " + (flag==0));
```


----------



## XHelp (12. Dez 2010)

In wie fern hat es was mit der Aufgabenstellung zu tun?


----------

