如何在每次无效输入后要求用户反复输入

所以我自己的有效日期只有1520到3999,我是这个网站的新手,我是java的新手,请帮助我想知道我做错了什么或在这段代码中做了什么。

int x; Scanner in = new Scanner (System.in); do { System.out.print ("Enter a date "); x = in.nextInt(); } while (x3999); { System.out.println ("Invalid Gregorian Calendar date."); System.out.print ("Please Input a valid Gregorian Calendar date: "); } }} 

在while循环中,只要输入无效,就获取另一个整数。 此外,您需要将&&更改为|| 在你的while条件下,因为没有数字小于1520且大于3999.你也不需要do部分,你需要在while循环后删除分号 – 它阻止循环为你做任何有效的事情。

 int x; Scanner in = new Scanner (System.in); System.out.print ("Enter a date "); x = in.nextInt(); while (x<1520 || x>3999) // change this to "or", ie && --> || { System.out.println ("Invalid Gregorian Calendar date."); System.out.print ("Please Input a valid Gregorian Calendar date: "); x = in.nextInt(); // get another number before checking conditions again } 

&&运算符是逻辑AND

输入值不能小于1520且大于3999.我认为您要检查x是否小于1520或大于3999。

要实现这一点,您应该使用正确的逻辑运算符,在这种情况下它是OR

x<1520 || x>3999

您可以按如下方式更改代码(注意,我将&&更改为||,因为没有大于3999且小于1520的数字。)

  int x; Scanner in = new Scanner (System.in); System.out.print("Enter a date "); x = in.nextInt(); while (x < 1520 || x > 3999) { System.out.println ("Invalid Gregorian Calendar date."); System.out.print ("Please Input a valid Gregorian Calendar date: "); x = in.nextInt(); } } 

您需要在while循环中询问用户,直到他输入正确的日期。

 int x; Scanner in = new Scanner (System.in); System.out.print ("Enter a date "); x = in.nextInt(); while (x<1520||x>3999) { System.out.println ("Invalid Gregorian Calendar date."); System.out.print ("Please Input a valid Gregorian Calendar date: "); x = in.nextInt(); } }}