2017-12-03 4 views
-1

Mein Programm soll jemanden bitten, eine Seriennummer und den Preis eines Objekts einzugeben. HierWhile-Schleife überspringt den ersten Eingabescanner nach der ersten Iteration?

ist der Klassentreiber

import java.io.*; 
import java.util.Scanner; 

public class InventoryDriver { 
    public static void main(String[] args)throws IOException { 
     Inventory storeItem = new Inventory(" ", 1); 
     PrintWriter storeFile = new PrintWriter("StoreInventory.txt"); 
     Scanner scan = new Scanner(System.in); 
     boolean running = true; 

     String itemNum = " "; 
     double originalPrice = 1; 

     while (running) { 

      System.out.println("Enter the item number or enter 0 when you are done."); 
      itemNum = scan.nextLine(); 

      storeItem.setItemNum(itemNum); 

      storeFile.println(itemNum); 

      if(itemNum.equals("0")) break; 


      System.out.println("Enter the original price or enter 0 when you are done."); 
      originalPrice = scan.nextDouble(); 

      storeItem.setOriginalPrice(originalPrice); 

      storeFile.println(originalPrice); 

      if(originalPrice == 0) break; 
     } 

     //create a scanner variable named myFile 
     Scanner myFile = new Scanner(new File("StoreInventory.txt")); 

     //Read my data from my file into the variablles 
     //itemNum = myFile.nextLine(); 
     //originalPrice = myFile.nextDouble(); 

     printSaleData(myFile, storeItem); 

     //Close the file 
     myFile.close(); 
     storeFile.close(); 
    } 
} 

Nach der Arbeit perfekt zum ersten Mal mit diesem Ausgang

Enter the item number or enter 0 when you are done. 
    input 

    Enter the original price or enter 0 when you are done. 
    input 

Aber wenn die Schleife zurück geht, gibt es diesen

Enter the item number or enter 0 when you are done. 
    input 

    Enter the original price or enter 0 when you are done. 
    input 

    Enter the item number or enter 0 when you are done. 
    Enter the original price or enter 0 when you are done. 
    input 

Was über meinen Code ändert sich die Schleife nach dem ersten gehen?
P.S. Selbst nachdem ich die Schleife unterbrochen habe, stoppt das gesamte Programm und ruft das Untermodul "printSaleData" nicht mehr zum Hauptmodul auf.

+1

Können Sie bitte genau erklären, was Sie als Eingabe angegeben haben, um diese Ergebnisse zu erhalten? Was genau ist der Output, den Sie suchen? – Keara

+0

Vielleicht ändern Sie 'itemNum = scan.nextLine();' in 'itemNum = scan.nextInt();'? – icarumbas

Antwort

0

Scan.nextLine auf scan.next() aktualisieren. Das wird es tun.

Verwandte Themen