2017-05-20 2 views
0

Dieser Code zeigt nur dann ausgegeben alsWarum nimmt es nur Zahlen als Eingabe?

Name des Eintrags eingeben Sie

den Preis der Artikel Geben Sie hinzufügen möchten Während es den Namen nehmen sollte, bevor es die doppelte als Eingabe verwendet.

newMenu = new Scanner(System.in); 

System.out.println("Please select on of the menuItems \n 1. Premium \n 2. Discount \n 3. Standard "); 
FileWriter file = new FileWriter(f,true); 

//Create an instance of the PrintWriter class using output as the argument 
PrintWriter abc = new PrintWriter(file); 

if(newMenu.nextInt()==1){ 
    abc.println("Premium"); 
    System.out.println("Enter Name of the item you want to add"); 
    String name=newMenu.nextLine(); 
    abc.println(m1.getNoOfItems()+1+" "+name); 

    System.out.println("Enter the price of item"); 
    double price=newMenu.nextDouble(); 
    abc.println(price); 
    m1.setNoOfItems(m1.getNoOfItems()+1);    
} 
+0

einfach die Halterung Schließung prüfen, nach dem, wenn die Bedingung –

Antwort

0

Sie müssen die \n nach .nextInt() Do

if(newMenu.nextInt()==1){ 
    newMenu.nextLine(); 
    //..rest of code 
1

Statt konsumieren:

if(newMenu.nextInt() == 1){ 

Sie können newMenu.nextLine() verwenden wie folgt statt:

if (Integer.parseInt(newMenu.nextLine()) == 1) { 

Während es den Namen vor nehmen sollte, nehmen Sie das Doppel als Eingabe.

Sie erhalten dieses Szenario nicht, weil Sie nicht die ganze Linie konsumieren.

+0

Es funktioniert, aber was ist der Unterschied zwischen ihnen –

+0

@AmritDumre weil 'nextInt() eine ganze Zahl liest, aber die Escape-Sequenz„\ n“nicht' lesen yo mehr lesen kann darüber hier [Scanner] (https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html) –

Verwandte Themen