今天写作业,实现一个简单的学生管理系统,在控制台简单交互即可。我使用了Scanner来接受输入,我的写法模拟如下:
public static void main(String[] args) {
while(true) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if(num==1) {
System.out.print("请输入学生的学号:");
String stuNum = scanner.nextLine();
System.out.print("请输入学生的名字:");
String stuName = scanner.nextLine();
}
else{
break;
}
}
}
想法是输入数字,根据输入的数字选择不同的选项,该选项是想输出一句提示”请输入学生的学号:”,然后按提示输入学号,然后再输出一句提示”请输入学生的名字:”,再按提示输入名字,然而结果与我期望的不一样。结果如下图:
一开始没有弄明白,于是觉得可能是自己对Scanner的用法还不熟悉,长时间不用忘记了关键点,于是到网上去看别人是怎么写的,于是就改为下面这种写法:
public static void main(String[] args) {
while(true) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if(num==1) {
System.out.print("请输入学生的学号:");
String stuNum = new Scanner(System.in).nextLine();
System.out.print("请输入学生的名字:");
String stuName = new Scanner(System.in).nextLine();
}
else{
break;
}
}
}
然后运行结果就正常了:
后来在刚刚写这个博客的时候,突然就想到,会不会是因为我输入数字1按回车之后,这个回车被下面的nextLine()接收了:
if(num==1) {
System.out.print("请输入学生的学号:");
String stuNum = scanner.nextLine();
所以会有连续输出两条提示。不过也只是猜测,先记录下,日后有时间再研究。