hi,
hab hier eine Methode um Zeilenweise aus einer Textdatei einzulesen und die Werte auftragsnummer (int) und Auftragsgeber(String) in ein Objekt zu schreiben...(in BlueJ)
wenn das erste Zeichen in der Textdatei ein "+" ist wird hinzugefügt,
bei "-" wird aus dem Stack gelöscht.
allerdings liefert er mir jeweils nur die ungeraden Zeilen bei folgender Textdatei:
ausgabe auf der Konsole:
weiss jemand warum das so ist?
hab hier eine Methode um Zeilenweise aus einer Textdatei einzulesen und die Werte auftragsnummer (int) und Auftragsgeber(String) in ein Objekt zu schreiben...(in BlueJ)
wenn das erste Zeichen in der Textdatei ein "+" ist wird hinzugefügt,
bei "-" wird aus dem Stack gelöscht.
Java:
/**
* Methode um Auftraege aus einer Datei einzulesen.
*
* @param FIFOStack stack1
* @return
*/
public void einlesenDatei(FIFOStack stack1) throws java.io.FileNotFoundException,StackNichtVorhandenException,
KeineLeserechteException,KeineNormaleDateiException
{
String line ="";
LineNumberReader reader = null;
int zeile;
if (stack1 ==null){throw new StackNichtVorhandenException();}
else {
String dateipfad = Stdin.readlnString("Bitte geben Sie den Pfad zur Datei an : ");
try{
File eingabe = new File(dateipfad);
if (eingabe == null) {throw new FileNotFoundException();}
else if (!eingabe.canRead() || !eingabe.exists()) {throw new KeineLeserechteException();}
else if (!eingabe.isFile()) {throw new KeineNormaleDateiException();}
else
{
reader = new LineNumberReader(new BufferedReader(new FileReader(eingabe)));
line= reader.readLine();
do{
//line= reader.readLine();
zeile = reader.getLineNumber();
if (line.startsWith("-")){
System.out.println(zeile + ". Zeile: (-) ---> loeschen");
stack1.shiftRemove();
}
else if (line.startsWith("+")){
//int aufnr = auftragsnummerLesen(reader,line);
String auftragsnummer= line.substring(1,line.indexOf("\t"));
int aufnr =Integer.parseInt(auftragsnummer);
//int aufnr= Integer.valueOf(auftragsnummer).intValue();
//String firma = auftragsgeberLesen(reader,line);
String firma = line.substring(line.lastIndexOf("\t"));
//stack1.erstelleDatei(aufnr,firma);
DateiObjekt obj = new DateiObjekt(aufnr,firma);
System.out.print(zeile+". Zeile: ");
System.out.print(obj.toString());
stack1.insert(obj);
}
else{
System.out.println ("Die "+zeile+". Zeile --> " +line + " hat kein richtiges Format " +
"und konnte nicht ausgelesen werden");
}
System.out.println("\nBisherige Elemente im Stack: \n" + stack1.toString());
line= reader.readLine();
}
while( reader.readLine() != null);}
reader.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
allerdings liefert er mir jeweils nur die ungeraden Zeilen bei folgender Textdatei:
Java:
+1234 BLABLA
+4325 Test
+6666 GAMESTAR
+5555 PCGAMES
+4141 KINO
-
-
ausgabe auf der Konsole:
Java:
1. Zeile: Auftragsnummer: 1234 Auftragsgeber: BLABLA
Bisherige Elemente im Stack:
Auftragsnummer: 1234 Auftragsgeber: BLABLA
3. Zeile: Auftragsnummer: 4325 Auftragsgeber: Test
Bisherige Elemente im Stack:
Auftragsnummer: 1234 Auftragsgeber: BLABLA
Auftragsnummer: 4325 Auftragsgeber: Test
5. Zeile: Auftragsnummer: 5555 Auftragsgeber: PCGAMES
Bisherige Elemente im Stack:
Auftragsnummer: 1234 Auftragsgeber: BLABLA
Auftragsnummer: 4325 Auftragsgeber: Test
Auftragsnummer: 5555 Auftragsgeber: PCGAMES
7. Zeile: (-) ---> loeschen
Bisherige Elemente im Stack:
Auftragsnummer: 4325 Auftragsgeber: Test
Auftragsnummer: 5555 Auftragsgeber: PCGAMES
weiss jemand warum das so ist?