我一直在攻读我在大学的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 :(得分:2)
nextInt()不读取整行。只是一个int。因此,你要输入结束门牌号的NL将被下一个吃掉。
我强烈推荐更像:
InputStreamReader isr = new InputStreamReader(System.in, "utf-8");
BufferedReader reader = new BufferedReader(isr);
然后,对于每个项目:
reader.readLine();
获取用户的输入,然后根据需要解析Integer.parseInt。