Java无法从控制台读取输入
我在大学里一直在努力学习Java(在此之前我从未做过Java),但我还是有点受输入的困扰。任务是编写一个基本程序,允许用户输入他们的姓名、门牌号、道路名称和城镇,但当输入道路名称时,它似乎会跳过,不允许您输入城镇的任何内容 现在,我尝试了一个刷新缓冲区,但它不起作用,因为它只是覆盖了输入的内容。例如,我将刷新缓冲区放在道路名称输入之后,然后该输入将被忽略 问题还可能是,尽管我使用的是nextLine而不是next,但空白正在破坏一切 这是我的密码Java无法从控制台读取输入,java,buffer,flush,Java,Buffer,Flush,我在大学里一直在努力学习Java(在此之前我从未做过Java),但我还是有点受输入的困扰。任务是编写一个基本程序,允许用户输入他们的姓名、门牌号、道路名称和城镇,但当输入道路名称时,它似乎会跳过,不允许您输入城镇的任何内容 现在,我尝试了一个刷新缓冲区,但它不起作用,因为它只是覆盖了输入的内容。例如,我将刷新缓冲区放在道路名称输入之后,然后该输入将被忽略 问题还可能是,尽管我使用的是nextLine而不是next,但空白正在破坏一切 这是我的密码 import java.util.*; pub
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");
}
}
nextInt()不读取整行。只有一个整数。所以你输入的结束门牌号的NL将留给下一个东西来吃
我强烈推荐更像:
InputStreamReader isr = new InputStreamReader(System.in, "utf-8");
BufferedReader reader = new BufferedReader(isr);
然后,对于每个项目:
reader.readLine();
获取用户的输入,然后根据需要使用Integer.parseInt之类的东西进行解析。你说的“闪存缓冲区”到底是什么意思?@bmargiles刷新缓冲区,我想。@bmargiles呃,抱歉。刷新缓冲区。时间不早了。我知道刷新缓冲区只有在输入一个整数后才可用,这就是为什么我一直在这里做什么。为什么你认为调用nextLine()会刷新缓冲区?我的建议是不要将扫描仪直接连接到System.in。但更一般地说,这种控制台IO在现代实际编程中非常罕见。