2017-06-14 5 views
-6
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    int i=scan.nextInt(); 

    // double d=scan.nextDouble(); 
    // Write your code here. 

    Double d = 0.0; 

    try { 

     d = Double.parseDouble(scan.nextLine()); 

    } catch (NumberFormatException e) { 

     e.printStackTrace(); 

    } 

    String s=scan.nextLine(); 

    System.out.println("String: " + s); 
    System.out.println("Double: " + d); 
    System.out.println("Int: " + i); 
} 
+1

Es wäre toll, wenn Sie [Code formatieren zuerst] (https://stackoverflow.com/posts/44539167/edit) –

+0

Ich bin neu. Ich weiß nicht, wie man Code formatiert.Sorry – Aditya

+2

Und sagen Sie, was passiert ist, was passiert, was Sie erwartet haben. –

Antwort

0

Es ist, weil Wenn Sie eine Nummer eingeben und die Eingabetaste drücken, verwendet scan.nextInt() nur die eingegebene Nummer, nicht das "Ende der Zeile". Wenn scan.nextLine() ausgeführt wird, verbraucht es das "Ende der Zeile" noch im Puffer von der ersten Eingabe, die Sie während der Ausführung von scan.nextInt() bereitgestellt haben.

Verwenden Sie stattdessen scan.nextLine() unmittelbar nach scan.nextInt().

in Ihrem aktuellen Szenario erhalten Sie die Ausnahme erhalten,

java.lang.NumberFormatException: empty String 

Ihr modifizierten Code wie sein wird,

public static void main(String args[]) 


    { 
     Scanner scan = new Scanner(System.in); 
     int i = scan.nextInt(); 
     scan.nextLine(); 
     // double d=scan.nextDouble(); 
     // Write your code here. 

     Double d = 0.0; 

     try { 

      d = Double.parseDouble(scan.nextLine()); 

     } catch (NumberFormatException e) { 

      e.printStackTrace(); 

    } 

     String s = scan.nextLine(); 

     System.out.println("String: " + s); 
     System.out.println("Double: " + d); 
     System.out.println("Int: " + i); 
    } 
0

Ihr Code kann wie folgt geändert werden (denken Sie daran, dass es immer eine gute Idee, den Scanner zu schließen):

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 

    String s = scan.nextLine(); 
    int i = scan.nextInt(); 
    double d = scan.nextDouble(); 

    System.out.println("String: " + s); 
    System.out.println("Double: " + d); 
    System.out.println("Int: " + i); 
    scan.close(); 
} 
Verwandte Themen