Wie kann ich nur besetzte Stellen eines Arrays aufrufen

Hallo,

ich bin Programmieranfängerin und soll eine Datenbank erstellen.
Maximal(!) 10 Tonträger sollen in einem Java-Array verwaltet werden. Also habe ich einen Java-Array mit 10 Positionen erstellt.
Davon sind aber nicht immer alle besetzt (ist ja nur maximal) und laut Vorgabe kann auch z.B. Position 3 nicht besetzt sein, Position 4 aber schon.
Wie schaffe ich es jetzt, dass bei der Ausgabe der Daten nur die besetzten Array Positionen ausgegeben werden? Ich bin am Verzweifeln und es wäre super, wenn mir jemand hilft.

So viel habe ich bis jetzt geschafft (Position 15 in der Klasse Library passt nicht… das war ein Versuch es zu lösen - aber da spielt der Compiler nicht mit):

public class Library {
	Media[]arr= new Media[10];	
	
	
	public void speichern (Media m){	
	
	arr [(m.nummer-1)] = m;
		
	}
	
	public void ausgeben (){
		
		for(int i=0;i<10;i++){
			if(arr[(i)].nummer != 0){
				System.out.println(arr**.nummer +" "+ arr**.titel +" "+ arr**.interpret +" "+ arr**.label +" "+ arr**.ort +" "+ arr**.weitere);
			}
		}
	
	}

}

	int nummer;
	String art, titel, interpret, label, ort, weitere;
	
	public Media (int nummer, String art, String titel, String interpret,String label, String ort, String weitere){
	
	this.nummer=nummer; this.art=art; this.titel=titel;
	this.interpret=interpret; this.label=label; this.ort=ort;
	this.weitere=weitere;
	
	}
	
}
	 public static void main (String[] args) {
	 	Media m1, m2;
	 	Library l1;
	 
	 	m1=new Media(1,"art1", "titel1", "interpret1", "label1", "ort1", "weitere1");
	 	m2=new Media(2,"art2", "titel2", "interpret2", "label2", "ort2", "weitere2");
	 	l1=new Library();
	 	l1.speichern(m1);
	 	l1.speichern(m2);
	 	l1.ausgeben();
		
	 
	 }
	 

}

Vielen, vielen Dank!!!

   if(arr** != null){
       System.out.println(arr**.nummer +" "+ arr**.titel +" "+ arr**.interpret +" "+ arr**.label +" "+ arr**.ort +" "+ arr**.weitere);
   }
}```

geht das?

kurze Erklaerung: Ein Objektarray wie du ihn hast ist per default mit null gefuellt. D.h. wenn eine Stelle nicht belegt ist kannst du wie Lectron schreibt einfach ueber null testen

Ja, eine Erkärung wäre ich noch schuldig, aber da ich nicht weiß, ob und wie auch gelöscht wird. Beim Löschen müsste in dem Fall die betreffende Indexposition des Arrays auf null setzen.

Nein… das geht leider nicht. Der Compiler sagt nichts, aber wenn ich die Main-Methode ausführen will kommt die Meldung

„Exception in thread „main“ java.lang.NoSuchMethodError: Library.ausgeben(I)V
at MusicDatabase.main(MusicDatabase.java:15)“

:frowning: aber danke schonmal für die schnelle Reaktion :slight_smile:

*** Edit ***

@ l-ectron:

Nein, gelöscht wird erstmal nichts. Die Datenbank soll eben max. mit 10 Positionen gefüllt werden aber es können auch weniger sein.

Vielleicht kommt das in späteren Aufgaben aber erstmal nicht.

VG

Na gut, ich habe eben mal deinen Code kopiert, den Code-Schnipsel von mir in deinen Code an Zeile 15 eingebaut und kompiliert.
Ergebnis:

Es geht also.
Überprüfe deine Methode ausgeben(). Lösche deine class-Dateien und kompiliere neu.
Falls es immer noch nicht geht, zeige bitte noch mal deine aktuelle ausgeben()-Methode.

Es geeeht!!! Juhu!! Danke!

Ich hatte die MusicDatabase Klasse nicht kompiliert… Sorry!

VG

welche ide benutzt du denn? :slight_smile:
Ausserdem, könnte man doch einfach eine liste verwenden, oder verstehe ich da etwas falsch?