int ID;
Scanner scan = new Scanner(System.in);
ID = Integer.parseInt(scan.nextLine());
do{
System.out.println("Improper EMPID, please reenter your EMPID.\n");
Scanner scan1 = new Scanner(System.in);
ID = Integer.parseInt(scan1.nextLine());
}
while (ID > 999999 && ID < 10000000);
return ID;
这是我的主代码中的一项功能,在该功能中,我尝试让用户输入七位数的ID。
应该无限循环,直到用户输入七个数字为止。,但是只能循环一次,然后退出。
我也使用while循环完成了此操作,并得到了相同的结果。我在这里没看到东西吗?
Scanner scan = new Scanner(System.in);
int id = Integer.parseInt(scan.nextLine());
while (id >= 10000000 || id <= 999999);{
System.out.println("Please enter your EMPID\n");
id = Integer.parseInt(scan.nextLine());
}
return id;
我的代码现在看起来像这样。
它会不断循环而不显示打印内容。
答案 0 :(得分:4)
当输入无效时,您应该继续循环:
while (ID <= 999999 || ID >= 10000000);
与问题无关,但请使用驼峰式大小写变量,并删除不必要的代码:
Scanner scan = new Scanner(System.in);
int id = Integer.parseInt(scan.nextLine());
while (id <= 999999 || id >= 10000000) {
System.out.println("Improper EMPID, please reenter your EMPID.\n");
id = Integer.parseInt(scan.nextLine());
}
答案 1 :(得分:0)
您不检查输入的长度,而是检查实际值。
您可以使用int length = String.valueOf(ID).lenght();
来获取一个int值的长度。
只是一个提示:不要每次都创建新的扫描仪,您会感到困惑。一个就好。
答案 2 :(得分:0)
这种逻辑在使用while循环时会更好,因为您首先要求用户提供一个值,并且仅在错误时才向他们提供错误消息
例如
Scanner scan = new Scanner(System.in);
int ID = Integer.parseInt(scan.nextLine());
while (!ID || ID <= 999999 || ID >= 10000000) {
System.out.println("Improper EMPID, please reenter your EMPID.\n");
ID = Integer.parseInt(scan1.nextLine());
}