2016-11-30 4 views
0

Zuerst habe ich einen Boolean erstellt und dann auf true gesetzt, um den ersten Durchlauf zu aktivieren ... dann würden nachfolgende Läufe auf der Benutzereingabe basieren.Wie man eine Eingabezeile verschiedener primitiver Typen abruft

boolean emptyLine = true; 
      String name; int quantity; double price; 

Scanner scan = new Scanner(System.in); 

     while(emptyLine != false) //repeatedly request user input if input is not empty 
     { 
     //ask the user for the quantity of items being purchased. 
     System.out.println("Enter name of item: Enter quantity of item purchased: Enter price of item being purchased: "); 
     input = scan.nextLine(); //should read the line of input 

     item =       //name of item from the line of input. 
     quantity = scan.nextInt();  //should get the quantity from the line of input 
     price = scan.nextDouble();  //get the price from the line of input 

     if(input.length() >= 0) 
     { 
      emptyLine = true; 
     } 
     else 
     { 
      emptyLine = false; 
     } 

     } 

Ich versuche, einen Code zu schreiben, um zu überprüfen, ob die Benutzereingabe leer ist oder nicht. Wenn die Benutzereingabe leer ist, wird der Benutzer aufgefordert, eine gültige Eingabe einzugeben oder zu beenden.

Wenn der Benutzer z. B. ein Leerzeichen eingibt, möchte ich, dass mein Programm dies akzeptiert. Wenn der Benutzer jedoch die EINGABETASTE drückt, sollte er abgelehnt werden.

+0

'item = quantity = scan.nextInt()' ist es absichtlich? PS: 'input.length()> = 0 'gibt Ihnen den booleschen Wert, den Sie wollen, kein Bedarf nach einem if-else – AxelH

+0

Da Sie die gesamte Zeile in' input' lesen, sollten Sie diese Zeichenfolge analysieren, z. mit einem Tokenizer, regulären Ausdruck usw. – Thomas

+0

Sie sollten sich wirklich 'Scanner # hasNextLine()' anschauen. Außerdem werden Sie wahrscheinlich mit [dieser] (http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo) Ausgabe – TheLostMind

Antwort

0

Ein einfacher Weg:

while (scann.hasNextLine()) { 
    String userInput = scan.nextLine(); 

Jetzt ist ein userinput String; und Sie könnten manuell überprüfen Sie seinen Inhalt; zum Beispiel durch den Aufruf isEmpty(); und wenn es nicht leer ist, können Sie versuchen, zum nächsten erwarteten Typ zu konvertieren.

+0

funktioniert nicht ... versuchte es vorher – Atinuke

+0

Was meinst du mit: "funktioniert nicht". Diese Problembeschreibung "funktioniert nicht", wenn Sie möchten, dass andere Personen Ihnen helfen ... – GhostCat

+0

using scan.hasNextLine(); – Atinuke

Verwandte Themen