JPw*_*ire 6 java java.util.scanner
这是我的代码 - 目的是为x个患者输入一些基本信息(年龄,姓名,性别).
public static void main(String[] args) {
int numPatients = 2;
int[] age = new int[numPatients];
String[] gender = new String[numPatients];
String[] name = new String[numPatients];
Scanner in = new Scanner(System.in);
/*
* Obtaining patients details: name, gender, age
* First create a Scanner input variable to read the data
*/
for (int i = 0; i < numPatients; i++)
{
System.out.println("Enter name of patient " + (i+1));
name[i] = in.nextLine();
System.out.println("Enter gender (male/female) of patient " + (i+1));
gender[i] = in.nextLine();
System.out.println("Enter age of patient " + (i+1));
age[i] = in.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当循环转到第二个变量时,即我无法输入患者姓名的值.它似乎跳过那里的输入并直接进入下一个输入,即性别.
Enter name of patient 1
Mark
Enter gender (male/female) of patient 1
Male
Enter age of patient 1
34
Enter name of patient 2 //Skipped. Could not enter input here
Enter gender (male/female) of patient 2
Jenna
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?是否更好地使用BufferedReader?
如果必须使用Scanner,则始终使用nextLine().问题是只nextInt()读取输入的整数部分并在读取Enter键之前停止.然后下一次调用以查看缓冲区中的Enter键和您输入的空名称.nextLine()
所以你可以这样做:
age[i] = Integer.parseInt(in.nextLine());
Run Code Online (Sandbox Code Playgroud)
并准备好处理用户键入除数字以外的其他内容时发生的异常.