# Prüfen,ob array leer ist



## sh33p (22. Okt 2010)

```
public static boolean isEmpty(){

   for(int i=0; i< array.length;i++){
       if(array[i] =! null){
       return true;
       }
      }
      return false;
}
```

Ich möchte prüfen,ob das Array leer ist, dadurch, dass alle Komponenten des Arrays auf Null verweisen. Nur das klappt nicht ganz :rtfm:


----------



## Haave (22. Okt 2010)

Sollte das Ausrufezeichen nicht vor dem Gleichheitszeichen stehen?
!=


----------



## Milo (22. Okt 2010)

Hallo,

neben dem Hinweis von Haave noch eine kurze Anmerkung: Wenn die Methode isEmpty true liefert, dann soll das Array doch leer sein, oder? In Deiner Prüfung


```
if(array[i] != null){ return true; }
```

machst Du es aber genau andersherum. Ist ein Element nicht Null, gibt true zurück.

Gruß Micha


----------



## XHelp (22. Okt 2010)

Die Logik ist auch etwas falsch. Wenn es !=null ist, dann muss du "false" zurückgeben


----------



## sh33p (22. Okt 2010)

jo aber troztdem geht es nicht weil es unterschiedliche typen sind: int type und null type..
nur keine ahnung wie ich es sonst realisieren soll


----------



## XHelp (22. Okt 2010)

ein primitiver Datentyp kann auch nicht null sein, ein Objekt schon.
Was willst du damit überhaupt erreichen?


----------



## sh33p (22. Okt 2010)

ich will prüfen,ob ein Array Werte enthält oder nicht. 
dachte mir,wenn alle komponenten auf null verweisen,dann sind keine int werte vorhanden und damit
ist das array "leer"


----------



## XHelp (22. Okt 2010)

bei den int ist der standartwert 0.
Du kannst aber auch ArrayList machen, und prüfen ob size()==0 ist. Dann musst du aber vorher alle Elemente rausschmeißen, die du nicht brauchst.
Bzw. wann soll denn dass array "leer" sein?


----------



## sh33p (22. Okt 2010)

array soll leer sein,wenn alle Komponenten auf null verweisen


----------



## XHelp (22. Okt 2010)

Naja, dann musst du aber auch ein Array von Objekten haben, kannst dann Integer statt int nehmen.


----------



## Michael... (22. Okt 2010)

Ein int - Array kann niemals "leer" sein, da die einzelnen Felder automatisch mit 0 initialisiert werden.
Ein Integer - Array könnte "leer" sein.
Aber grundsätzlich scheint mir das Vorgehen ein bisschen merkwürdig. Was hast Du denn vor?


----------



## sh33p (22. Okt 2010)

die eigentliche problematik ist,das ich eine Klasse Menge programmieren soll, die sich wie ein Menge verhält d,h:
o ein Element e in eine Menge m einfuegen
o ein Element e aus einer Menge m entfernen
o pruefen, ob ein Element e in einer Menge m enthalten ist
o pruefen, ob eine Menge m leer ist
o pruefen auf Gleichheit, Teilmenge und Obermenge bzgl. zwei Mengen m1
und m2
o Vereinigung, Differenz und Schnitt bzgl. zwei Mengen m1 und m2

es gibt zwar schon das Interface Set aber naja..was man nich so alles machen muss 


```
public class Menge {
public static int size = 20;
public static int[] array = new int[20];

 public static boolean isEmpty(){   // prueft ob die Menge leer ist

   for(int i=0; i< array.length;i++){
       if(array[i] != 0){
       return false;
       }
      }
      return true;
 }
 public static int hasElement(){  //prueft,ob ein Element in der Menge vorhanden ist

 }
 public static int einfuegen(){   // Element in die Menge einfuegen

 }
 public static int loeschen(){   // Element aus der Menge entfernen

 }

 
}
```

das problem ist ja das beim Typ array die speicherplätze bestimmt sind. find ich ziemlich blöd dafür eine Arraystruktur zu nehmen aber was soll man machen :autsch:


----------



## XHelp (22. Okt 2010)

Ne, da bist du bei einer ArrayList wirklcih besser aufgehoben.


----------



## Michael... (22. Okt 2010)

Nimm eine List z.B. ArrayList


----------



## sh33p (22. Okt 2010)

ok werde es damit versuchen.

danke


----------



## sh33p (22. Okt 2010)

so mein ansatz ist nun folgender:

Klasse ArrayList ableiten und die Methoden überschreiben,um die Funktionalität einer Menge zu bekommen


```
import java.util.*;
public class Menge extends ArrayList<Integer>  {

   public boolean add (Integer i) {
        if ( i < 0 || this.contains(i) ) {
            return false;
        }

        super.add(i);
        return true;
    }
public static void main(String[] args){

 Menge m1 = new Menge();
  m1.add(1);
  m1.add(2);
  
  for(int i : m1){
    System.out.println(i);
  }
}
}
```


----------

