Scanner sc = new Scanner(System.in);
int conditon2 = sc.nextInt();
switch (conditon2) {
case 1:
for (int i = 0; i < theory.length ; i++) {
if (theory[i] == null) {
System.out.print("请输入课程编号:");
courseID = sc.nextLine();
System.out.print("请输入课程名字:");
courseName = sc.nextLine();
break;
}
break;
default:
break;
}
}
为什么,当程序运行时,输入 1,按回车后,
直接显示 请输入课程编号: 请输入课程名字:
你用sc.nextInt()读一个int时如果是在一行上输入,然后按enter结束,scanner不会跳过结尾的'\n',而nextLine()的作用是跳过'\n'并返回被跳过的字符串,所以你下次nextLine()的调用由于缓冲区里已经有一个'\n',所以就直接跳到输入课程名字去了。
解决方法是在nextInt()后加一句nextLine():
Scanner sc = new Scanner(System.in);
int conditon2 = sc.nextInt(); sc.nextLine(); // 跳过'\n'
switch (conditon2) {
case 1:
for (int i = 0; i < theory.length ; i++) {
if (theory[i] == null) {
System.out.print("请输入课程编号:");
courseID = sc.nextLine();
System.out.print("请输入课程名字:");
courseName = sc.nextLine();
break;
}
break;
default:
break;
}
}