Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe eine abstracte class Ticket eine sub class MusicE und eine class Elist.
Die Ticket class hat die Attribute :Titel,Datum ,Ort und Idcode.
Die sub class MusicE erbt alle diese Attribute und wird erweitert durch das Attribut Performer.
Die Elist class soll ein Txt file lesen das so aussieht.
Type: Music Event
Titel: Rock you
Datum : 15/02/10
Ort: Eifel
Performer: Loco
Idcode: 963A
Type: Cinema Event
Titel: Love you
Datum : 12/08/10
Ort: Bonn
Performer: Colo
Idcode: 185B
Nun versuche ich den Text zu lesen und zu ueberpruefen ob ein MusicE Objekt vorhanden it .Falls ja sollte es in eine Liste kommen.
Das Lesen vom ganzen Text klappt alles weitere klappt leider ueberhaupt nicht.
Java:
import java.util.ArrayList;
import java.io.*;
import java.util.Scanner;
public class EList
{
private ArrayList<Ticket>list = new ArrayList<Ticket>();
public EList()
{
readFile();
}
public void readFile()
{
try{
Scanner scan = new Scanner(new FileInputStream("Info.txt"));
String line;
while(scan.hasNextLine())
{
line=scan.nextLine();
System.out.println(line);
}
}
catch(Exception e)
{
System.out.println("error");
}
}
public ArrayList<Ticket> getList()
{
return list;
}
}
Die entsprechende Stelle konnte im im Code leider nicht entdecken. Für mich sieht's eher so aus, als ob der text einfach auf die Konsole geschrieben werden würde.
Ferner würde ich dir dringend empfehlen, deinen Code etwas sorgfältiger zu formatieren und vor allem auf Code Conventions zu achten: Reader() ist der denkbar schlechteste methodenname, den man sich einfallen lassen könnte. Zum einen klingt es nicht wie eine Aktion, sondern wie ein Objekt, zum anderen ist es sogar wie ein Klassenname hingeschrieben, und am allerschlimmsten: die Klasse gibt es tatsächlich, und zwar in den Kernpaketen der Standard-API. Methodennamen in camelCase und klein schreiben.
Eine einzelne Zeile zu scannen und diese dann an zeilenumbrüchen zu unterteilen macht irgendwie 0 Sinn, wenn es dadrin noch zeilenumbrüche gäbe, wäre es ja nicht eine Zeile... ???:L
Hab hier ma schnell was geschrieben, was dir vllt weiterhilft. Is jetzt nicht getestet, hoffe es hilft dir bisschen weiter. Allerdings verstehe ich nicht wie sich die Events unterscheiden, in deinem Startpost haben beide sechs Attribute.
Java:
public static final String CINEMA = "Cinema Event";
public static final String MOVIE = "Music Event";
private String[] info;
public void readFileAndCreateEvent(String filePath)
{
try{
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line = br.readLine();
int i = 0;
while(line != null) { // solange Dokument nicht leer ist
line = br.readLine(); // lese neue Zeile
info[i] = line; // und speichere Wert in das Info Array
i++;
}
} catch(Exception e) {
e.printStackTrace();
System.err.println("Fehler beim Einlesen");
}
if(info[0].contains(CINEMA)) { // Überprüfe um welchen Typ es sich handelt
MusicE musicEvent = new MusicE(info); // und erzeuge das passende Objekt
} else if(info[0].contains(MOVIE)) {
CinemaE cinemaEvent = new CinemaE(info);
}
}
Ich schaffe es nicht eine Methode zu schreiben die volgendes macht.Wenn im Textfile oeffters ein Zeilenblock vorhanden ist der contains(Cinema) = true hat ,sollten auch so viele Objekte erzeugt werden.
Wenn er nur das Array[0] untersucht wirds wohl da auch enden und immer nur 1 Objekt erzeugen.
...die volgendes macht.Wenn im Textfile oeffters ein Zeilenblock vorhanden ist der contains(Cinema) = true hat ,sollten auch so viele Objekte erzeugt werden.
Ich schaffe es nicht eine Methode zu schreiben die volgendes macht.Wenn im Textfile oeffters ein Zeilenblock vorhanden ist der contains(Cinema) = true hat ,sollten auch so viele Objekte erzeugt werden.
Wenn er nur das Array[0] untersucht wirds wohl da auch enden und immer nur 1 Objekt erzeugen.
Danke an TheChemist und ARadauer die wenigstens versucht haben seriös zu sein.
Über die anderen die nur mit Zitat antworten brauch nicht viel zu sagen. Besonders
Leroy 42 ist ein A............ und vertippt sich noch selber. Danke auch an bygones der die Kreativität von Leroy 42 zu schätzen weiß.
Naja, wer gut gemeinte ratschläge aus der ersten Antwort befolgt, wird evtl. nach 20 Beiträgen nicht von irgendwelchen angeblichen A.... wegen demselben Grund genervt :noe:
Dass du hier nach 3 Tagen 15 Zeilen Code von TheChemist heldenhaft nachvollzogen hast ist zwar schön und gut, verleiht dir imho noch nicht ganz die nötige Erfahrung, um jemanden korrekterweise als A.... einzustufen.
Undeutlich formulierte Probleme führen nun mal dazu, dass die anderen Anfänger nicht verstehen was du willst, und die ganzen Fortgeschrittenen unterfordert sind und deinen Thread mit unpassenden Zitaten zumüllen... :autsch:
Bemühe dich bitte nächstes Mal einfach darum, kurz und klar zu schildern was deine Frage ist. :rtfm: Ohne den ganzen Prozess auf drei tage auszudehnen.
@all: Und 'n bisschen mehr Netiquette schadet auch nicht, hab ich neulich festgestellt (ja, das sagt ausgerechnet der scheiß Troll^^ )