2016-07-20 17 views
-1

Das Problem liegt in der Ausgabe. Ich bekomme die erwartete Ausgabe bis zu der Kontaktnummer, nachdem der eingegebene Teil (von der Tastatur) der Adresse überspringt und zu dem E-Mail-Teil springt. Ich habe den Ausgang unten angebracht. Ich wäre dankbar, wenn jemand mein Problem herauszufindenString kann nicht eingegeben werden und zur nächsten Eingabeaufforderung gehen

import java.util.Scanner; 


public class PhoneLibrary { 
    Scanner input = new Scanner(System.in); 

    String contactName; 
    double contactNumber; 
    String contactAddress; 
    String contactEmail; 
    String description; 
    boolean favourite; 

    void fillForm() { 
     System.out.print("Name: "); 
     contactName = input.nextLine(); 

     System.out.print("Number: "); 
     contactNumber = input.nextDouble(); 

     System.out.print("Address: "); 
     contactAddress = input.nextLine(); 

     System.out.print("E-mail: "); 
     contactEmail= input.nextLine(); 
    } 

    public static void main(String[] args) { 
     PhoneLibrary contact = new PhoneLibrary(); 
     contact.fillForm(); 
    } 

} 

Ausgabe

Name: Vector 
Number: 9854425655 
Address: E-mail: [email protected]ail.com 
+0

Sie müssen eine E-Mail-Puffer löschen, dh. Mach eine Spülung. Also input.nextLine() nur um den Scanner vor der Eingabe für die Adresse – YakuZa

Antwort

0

input.nextLine() hinzufügen danach mag:

System.out.print("Number: "); 
contactNumber = input.nextDouble(); 
0

Ganz einfach verwenden vor der Eingabe der Adresse nehmen.

input= new Scanner(System.in); 

Ihr Code:

System.out.print("Name: "); 
contactName = input.nextLine(); 

System.out.print("Number: "); 
contactNumber = input.nextDouble(); 

System.out.print("Address: "); 
input= new Scanner(System.in); 
contactAddress = input.nextLine(); 

System.out.print("E-mail: "); 
contactEmail= input.nextLine(); 
+0

zurückzusetzen, danke, es funktioniert. aber warum funktioniert mein vorheriger Code nicht? Es scheint, als ob es keinen Fehler in meinem vorherigen Code gibt. –

+0

Dann genehmigen Sie bitte meine Antwort. Ja, Sie haben keinen Fehler, aber Sie müssen das Scannerobjekt initialisieren, nachdem die nextLine() -Methode eine andere Zeile einer Zeichenfolge verwendet –

+0

Wenn Sie nextLine() aufrufen, wird die Zeile aus dem Puffer entfernt und effektiv vom Scanner verworfen. Wenn es Ihnen hilft, genehmigen Sie bitte die Lösung. Vielen Dank –

0

versuchen, diese

System.out.print("Name: "); 
contactName = input.nextLine(); 

System.out.print("Number: "); 
contactNumber = Double.parseDouble(input.nextLine()); 

System.out.print("Address: "); 
contactAddress = input.nextLine(); 

System.out.print("E-mail: "); 
contactEmail= input.nextLine(); 

neue Linie wurde in contactAddress in Ihrem Code aufgenommen, wie Sie nextdouble verwendet

-3

nextDouble() ist eine Methode der Klasse Scanner, der das nächste gescannte Double zurückgibt.

haben Sie es versucht?

void fillForm() { 
     System.out.print("Name: "); 
     contactName = input.nextLine(); 

     System.out.print("Number: "); 
    try{ 
     contactNumber = Integer.parseInt(input.nextLine()); 
    }catch(ParseException e){   
     throw new ParseException(); 
    } 
     System.out.print("Address: "); 
     contactAddress = input.nextLine(); 

     System.out.print("E-mail: "); 
     contactEmail= input.nextLine(); 
    } 

    public static void main(String[] args) { 
     PhoneLibrary contact = new PhoneLibrary(); 
     contact.fillForm(); 
    } 
0

Verwendung input.nextLine(); nach contactNumber = input.nextDouble();

Da nextdouble-Methode nicht zurückbekommt (\ r) von der Konsole so Adresse varialble bekommt die Rückkehr char und fließt Eingang

Verwandte Themen