2014-01-26 44 views
1

我一直在大學攻讀Java的工作(我從來沒有在此之前完成Java),但我一直堅持輸入一點點。其任務是編寫一個基本程序,允許用戶輸入他們的姓名,門牌號碼,道路名稱和城鎮,但是當它輸入道路名稱時,它似乎跳過並且不允許你輸入城鎮的任何東西。JAVA麻煩從控制檯讀取輸入

現在,我已經嘗試了一個刷新緩衝區,但沒有奏效,因爲它只是覆蓋了輸入內容。例如,我在道路名稱輸入後放置了清空緩衝區,然後該輸入將被忽略。

問題也可能是,儘管我使用nextLine而不是下一個,但是空白區仍在破壞事情。

這是我的代碼;

import java.util.*; 

public class AddressProj { 

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

     System.out.printf("Please input your surname: "); 
     String name = myKeyboard.nextLine(); 

     System.out.printf("Please input your house number: "); 
     int houseNumber = myKeyboard.nextInt(); 

     System.out.printf("Please input your road name: "); 
     String roadName = myKeyboard.nextLine(); 
     myKeyboard.nextLine(); //Flush buffer 

     System.out.printf("Please input your town: "); 
     String town = myKeyboard.nextLine(); 

     System.out.printf("Surname: " + name + "\nHouse Number: " + houseNumber + "\nRoad Name: " + roadName + "\nTown: " + town + "\n"); 
    } 
} 
+0

你是什麼意思的「閃存緩衝區」? – bmargulies

+0

@bmargulies _flush_緩衝區,我想。 –

+0

@bmargulies呃,道歉。沖洗緩衝區。天色已晚。 – Sevaara

回答

2

nextInt()不讀取整行。只是一個整數。因此,你打算結束房屋號碼的NL將會被下一件事情吃掉。

我強烈建議更多的東西一樣:

InputStreamReader isr = new InputStreamReader(System.in, "utf-8"); 
BufferedReader reader = new BufferedReader(isr); 

然後,對於每個項目:

reader.readLine(); 

獲取用戶的輸入,然後解析需要與之類的東西的Integer.parseInt。