Collections Verkettete Liste || Klausurübung

dudsen

Mitglied
Hi an alle,

Wieder ein neuer mit neuen Problemen. Das Szenario sieht folgendermaßen aus:

Programmierungsklausur rückt immer näher, habe alte Klausuraufgaben, jedoch keine Lösungen dazu.
Somit fällt es echt schwer Fehler zu finden, da man nirgends eine vernünftige Vergleichsmöglichkeit hat. Internetquellen haben mir in diesen speziellen Fällen auch nicht weitergeholfen.
Vielleicht habt ja jemand die Muße sich mit dem Kram zu beschäftigen und mich auf den richtigen Weg zu treten. Keine Lust falsche Sachen zu lernen und die Klausur komplett zu verhauen.

Ok hier mal eine die kleine Spitze des Eisbergs:

Aufgabe (zusammengekürzt):

In einer Umfrage über Filme hat sich ergeben ( Stimmen für Film , Filmname):

435 Avatar
159 Matrix
239 Scream
59 Citizen Kane

(Sind in diesem Format in Textdatei gespeichert =Daten.txt)

In einem Programm "Umfrage" sollen diese Daten verarbeitet werden. Dabei soll eine einfach verkettete Liste "filmListe" die Daten der Datei representieren.

Java:
public class Umfrage{
       public Umfrage(In in){
        ......
       }

//weiterer Code, der erst mal hier nicht relevant ist

Die Klasse FilmListe sieht so aus:

Java:
public class FilmListe {
	public int stimmen;
	public String titel;
	public FilmListe next;
	
	FilmListe(int stimmen, String titel){
		this.stimmen=stimmen;
		this.titel=titel;
		next=null;
	}

}

Schreiben sie nun die Implementierung des Konstruktors Umfrage(In in).
Das In Objekt hat hierbei die Struktur wie beschriebene Datei. Die Liste soll nach der angegebenen Datei folgendermaßen aussehen:

filmListe-->Avatar-->Matrix-->Scream-->Citizen Kane-->null

Soweit so gut. simple Sache das. Aber es will nicht. Und wenn diese Teilaufgabe nicht geht, kann ich die darauf aufbauenden nicht Kontrollieren ( welche bestimmt ebenfalls falsch sind. yey!)

In.Java ist natürlich im selben Ordner. "Daten.txt" ebenfalls.

Das ist mein Code soweit:

Java:
public class Umfrage {

	private FilmListe filmListe;
	
	public Umfrage(In in){
		filmListe=null;
		FilmListe newfirst=null;
		FilmListe current=null;

		int stimmen;
		String titel;
		
		if (filmListe==null){
			stimmen=in.readInt();
			titel=in.readString();
			filmListe=new FilmListe(stimmen,titel);
			current=filmListe;
		}
		while(!in.isEmpty()){
			stimmen=in.readInt();
			titel= in.readString();
			
			newfirst=new FilmListe(stimmen,titel);
			current.next=newfirst;
			newfirst.next=null;
			current=newfirst;
		}
	}
	
	public String toString(){
		String a="";
		for(FilmListe x= filmListe;x!=null;x=x.next){
			a+=x;
		}
		return a;
	}
}

Die toString ist nicht notwendig für Aufgabe, aber hab ich drangehängt wegen dem Testclient:

Java:
public class test1 {

	
	public static void main(String[] args) {

		In in=new In("Daten.txt");
		Umfrage a=new Umfrage(in);
		
		System.out.println(a);
	}

}

Und das spuckt die Konsole mir aus:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at In.readInt(In.java:171)
at Umfrage.<init>(Umfrage.java:21)
at test1.main(test1.java:10)

Der Debugger funktioniert bei mir auch nicht so recht ( eclipse) wenn Code in mehreren Dateien gesplittet ist. Naja, ob der mir so viel weiterhelfen würde sei mal dahingestellt.

Bin für Hilfe echt dankbar

Thx

Dudsen
 
S

SlaterB

Gast
die Exception sagt dir nichts?
sie spricht doch eine deutliche Sprache, bei readInt() bzw. dann nextInt() des Scanners geht was schief,
das kann man ja sehr wenig verstehen, aber doch wenigstens nebenbei bemerken, dass der Inhalt der Datei was damit zu tun haben könnte,
dass es sich lohnt, die Datei im Original hochzuladen (an Posting anhängen)?

dann gibts weitere Standardschritte, einen komplizierten Debugger braucht man dafür im Leben nicht, ganz einfach System.out.println(),
an der Zeilennummer sieht man dass der Fehler in der Schleife passiert, gib doch in der Schleife aus was schon eingelesen wurde,
dann siehst du exakt, welche Zeile der Datei Probleme macht, vielleicht die letzte, vielleicht noch ein Leerzeichen oder was auch immer
 

dudsen

Mitglied
Mann, es ist ja echt nicht zu fassen.

Natürlich war es die Datei, da im letzten Eintrag der Filmname "Citizen Kane" aus 2 Namen besteht.
Offensichtlich die Schuld des Profs :D

Meine toString Methode ist natürlich auch völliger Blödsinn.
Nach 2 kleinen Änderungen läuft alles... Ich glaube es war nur die Verzweiflung, habe den Wald vor lauter Bäumen nicht mehr gesehen :autsch:

Dank dir für den kleinen Schubser!

Mal sehen wo der nächste Haken liegen wird ;)

Cheers!
 

Neue Themen


Oben