Falsche Bed. (ein überlauf) seh den Fehler aber nicht.

Status
Nicht offen für weitere Antworten.

Ocean-Driver

Bekanntes Mitglied
Hallo,

Das ist meine main-class:


Code:
package gui;
import filmObjekt.*;
class Main {


	public static void main(String[] args) {
		
		ObjectListe database = new ObjectListe();
		
		database.addGenre("Horror", "Filme bei denen man sich gruselt");
		database.addQuali("Sehr gut", "Sehr gute Bild und Ton Qualität wie bei einer DVD");
		database.addFormat("DVD-9", "DVD mit 9 Gigabyte Speicher");
		database.addFsk(16, "FSK-16 besonders blutig");
		database.addfile("E:/movie/movie1.mpg", database.getQuali(0), database.getFormat(0), "E:/movie/movie1.jpg");
		
		database.addFilm("Freitag der 13", database.getGenre(0), "Freitag der 13. eben", database.getFile(0), database.getFsk(0));
		database.addFilm("Freitag der 14", database.getGenre(0), "Freitag der 14. eben", database.getFile(0), database.getFsk(0));
		database.addFilm("Freitag der 15", database.getGenre(0), "Freitag der 15. eben", database.getFile(0), database.getFsk(0));
		
		//System.out.println(database.getMovie(database.getFilm(0)));
		
		showDatabase(database);
		
		//Main_Fenster main = new Main_Fenster();
		
	}
	
	public static void showDatabase(ObjectListe database){

		for(int i=0; database.getFilm(i) != null; i++){
			System.out.println(database.getMovie(database.getFilm(i)));
		}
		
	}

}

Allerdings läuft er bis zur 3, obwohl er ja nur 0,1 und 2 anwählen sollte. Was ist falsch?
Bei i=3 ist die Bediung ja falsch, da das objekt null ist und er in die Schleife doch garnicht mehr reinkommensollte?

Hatte schon an try & catch gedacht, aber das kann doch keine Lösung sein.

Hier der Fehler:

Code:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
	at java.util.ArrayList.RangeCheck(Unknown Source)
	at java.util.ArrayList.get(Unknown Source)
	at filmObjekt.ObjectListe.getFilm(ObjectListe.java:33)
	at gui.Main.showDatabase(Main.java:30)
	at gui.Main.main(Main.java:22)
 
Da kommt aber nicht null raus, sondern eine Exception.
Entweder du spendierst deiner Database einen Iterator, oder eine size() Methode.
 
Stimmt, jetzt seh ich den Denkfehler. 🙂
Hab einfach eine size-methode eingefügt, aber was ist denn bitte ein Iterator?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben