做循环时用户输入不循环

时间:2018-08-30 14:27:28

标签: java while-loop do-while

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;

我的代码现在看起来像这样。

它会不断循环而不显示打印内容。

3 个答案:

答案 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());
}