2013-10-02 38 views
1

我是Java初學者,我剛剛編寫了一個程序來獲取用戶的姓名,電話號碼和地址。問題是在閱讀電話號碼後,程序不會繼續閱讀地址,就好像它正在跳過它。這裏是我的代碼:如何在java中接受來自用戶的不同數據類型

public static void main(String [] arge){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter your name, phone number and address"); 
    String name = sc.nextLine(); 
    long phone = sc.nextLong(); 

    String address = sc.nextLine(); 

    System.out.println("\n *** Here is your info ***"); 
    System.out.println("Name: "+name+"\nPhone number: "+phone+"\n Address: "+address); 
} 
+3

的可能重複[後跳nextLine()使用nextInt()](http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint)[掃描儀問題的 –

+0

可能重複當nextXXX後使用nextLine](http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextxxx) –

回答

0

你的程序將讀取所有三個輸入。但我相信你在輸入電話號碼後按下回車鍵。試着做輸入這裏提到:

MYNAME

100000 myAddress

sc.nextLong()方法將接受長值,然後sc.nextLine()將等待輸入上同一條線。如果你在輸入long值後按回車,sc.nextLine()將只讀空。

+0

不,它不會。你可以通過我標記的重複答案。 –

+0

@RohitJain我在發佈答案之前通過eclipse對其進行了驗證。 –

+0

也許你在同一行上傳遞電話號碼和地址。但真正的問題是不同的。 –

0

試試這個:

String name = sc.nextLine(); 
    long phone = Long.parseLong(sc.nextLine()); 
    String address = sc.nextLine(); 
0

試圖通過一個

Scanner sc = new Scanner(System.in); 
    System.out.println("Enter your name"); 
    String name = sc.nextLine(); 
    System.out.println("Enter your phone number"); 
    long phone = sc.nextLong(); 
     sc.nextLine();//to catch the buffer"ENTER KEY" value 
    System.out.println("Enter your address"); 
    String address = sc.nextLine(); 
    System.out.println("\n *** Here is your info ***"); 
    System.out.println("Name: "+name+"\nPhone number: "+phone+"\n Address: "+address); 
3
long phone = sc.nextLong(); 

改變這一閱讀值之一

long phone = Long.parseLong(sc.nextLine()); 

因爲給的電話號碼後,輸入你擊中的是正在消耗的nextLine這是設置爲您的address。因此,空白地址(在某種意義上,程序不會提示你輸入地址)。

使代碼正常工作的另一種方式是(無需更改任何內容,YES,無需任何更改!)是將您的電話號碼和地址作爲輸入提供在同一行中。掃描儀將把該空間作爲默認分隔符併爲您完成這項工作。這是因爲nextLong()只會掃描一個長的值。

+0

這個技巧。非常感謝這些信息。 –

+0

很高興幫助!:)只要可以,請接受答案。 – SudoRahul

0

試試這個。

import java.util.Scanner; 

class ScannerTest{ 

public static void main(String args[]){ 

    Scanner sc=new Scanner(System.in); 

    System.out.println("Enter your rollno"); 

    int rollno=sc.nextInt(); 

    System.out.println("Enter your name"); 

    String name=sc.next(); 

    System.out.println("Enter your fee"); 

    double fee=sc.nextDouble(); 

    System.out.println("Rollno:"+rollno+" name:"+name+" fee:"+fee); 


} 

} 
相關問題