2013-10-16 37 views
0

我是新來的java,我做了我的第一個「程序」 - 一個簡單的輸入/輸出程序,吐出你輸入的內容。如何刷新java中的結束符?

import java.util.Scanner; 

class Input{ 
    public static void main(String args[]){ 
     int zip; 
     int a; 
     double e = 2.718281828459045; 
     String name; 

     Scanner in = new Scanner(System.in); 

     System.out.println("Enter your zip code: "); 
     zip = in.nextInt(); 

     System.out.println("Enter your name: "); 
     name = in.nextLine(); 

     System.out.println("Enter an integer: "); 
     a = in.nextInt(); 

     System.out.println(name+", "+"your zip code is "+zip+" and e*"+a+" is "+e*a); 

    } 
} 

所以,當我運行這個,我輸入郵政編碼,它將轉到下一個整數輸入。我懷疑輸入流正在吞嚥終止字符,一旦我按回車。任何快速修復或我只是java愚蠢?

謝謝,所以!

+1

你的猜測是正確的,你只需要一個額外的nextLine。 –

回答

1

之間
System.out.println("Enter your zip code: "); 
zip = in.nextInt(); 

System.out.println("Enter your name: "); 
name = in.nextLine(); 

添加一個額外in.nextLine()。所以

System.out.println("Enter your zip code: "); 
zip = in.nextInt(); 

in.nextLine(); // consume dangling eol characters 

System.out.println("Enter your name: "); 
name = in.nextLine(); 

的方法Scanner#nextInt()只讀取作出int,沒有什麼後自帶所需的字節數。如果您在輸入整數後按Enter鍵,您將有一個懸掛的回車/換行符。你需要一個Scanner#nextLine()來擺脫它。

+0

我不是這個解決方案的巨大粉絲,因爲它依賴於那裏總是一個懸而未決的回車......以任何方式閱讀它,然後*然後*檢查一個空白行看起來更潔淨。 – j6m8

+0

@ j6m8你是什麼意思_以任何一種方式閱讀_? –

+1

未分配的'in.nextLine()'行依賴於輸入始終有一個懸而未決的EOL ...我想這是合理的做出這樣的假設,但它可能是聰明的分配給* something *以便檢查並確保它確實是空的。 – j6m8