2017-11-05 7 views
1

Momentan nehmen meine Data Structures-Klasse und wir eine Warteschlange in unserem nächsten Programm beschäftigen.Verwenden einer Uhr While-Schleife zum Lesen von Dateien in einer While-Schleife

Wir sind eine Eingabedatei wie dies gegebene:

10 324 Boots 32.33 
11 365 Gloves 33.33 
12 384 Sweater 36.33 
13 414 Blouse 35.33 

Ich bin der erste int zu lesen (das ist eine Zeiteinheit) und verwenden, die als Referenz für meine Uhr, die in Laufen hält der Hintergrund.

Ich habe etwas in dieser Richtung:

Scanner infp = new Scanner(new File(FILE)); 
while (busy) { 
    clock = 0; 
    clock += clockCount++; 

    while (infp.hasNext()) { 
     timeEntered = infp.nextInt(); 
     infp.nextLine(); 

     System.out.println(timeEntered); 
     busy = true; 

     if (timeEntered == clock) { 
      itemNum = infp.nextInt(); 
      type = infp.nextLine(); 
      itemPrice = infp.nextDouble(); 
     } 
    } 
} 

Das Problem ist, wenn ich es benutze ich erhalte eine Fehlermeldung ‚InputMismatchException‘. Mir ist bewusst, dass Sie den Wagen vor einem String überspringen müssen, was ich glaube.

Ich habe keine Ahnung wohin von hier zu gehen.

+0

Ihre Fehler bei Typ = infp.nextLine(). Es liest eine ganze Zeile. Sie sollten Ihre Zeile mit der Read-Zeile lesen und die String-Split-Methode verwenden. –

Antwort

0

So gegeben diese Säulen:

10 324 Boots 32.33 
11 365 Gloves 33.33 
12 384 Sweater 36.33 
13 414 Blouse 35.33 

Für jede Zeile lesen Sie die erste Spalte in timeEntered. Und dann tun Sie infp.nextLine() und das ist ein Fehler. Wenn Sie nextLine aufrufen, liest der Scanner alles Ungelesene in der aktuellen Zeile bis zum Ende. Das bedeutet, dass Sie die anderen Spaltenwerte nicht lesen können. Aber Sie brauchen sie. Rufen Sie also nicht nextLine auf, wenn Sie weiterhin Werte in einer Zeile verarbeiten möchten. Ruf es danach an.

Und Sie haben genau die gleiche Art von Problem wieder später, wenn Sie type und itemPrice lesen.

die while (infp.hasNext()) mit diesem ersetzen:

while (infp.hasNextLine()) { 
    int timeEntered = infp.nextInt(); 

    System.out.println(timeEntered); 
    busy = true; 

    if (timeEntered == clock) { 
     itemNum = infp.nextInt(); 
     type = infp.next(); 
     itemPrice = infp.nextDouble(); 
    } 
    infp.nextLine(); 
} 
+0

Arbeiten, danke !!! – Kraw24

Verwandte Themen