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

时间:2014-07-03 14:58:34

标签: java

因此,我自己的有效日期仅为1520年至3999年,我是这个网站的新手,也是我对java的新手 请帮忙 我想知道我在这段代码中做错了什么或做了什么。

    int x;
    Scanner in = new Scanner (System.in);
    do
    {
        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: ");
    }
}}

4 个答案:

答案 0 :(得分:0)

在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", i.e. && --> || 
    {
        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
    }

答案 1 :(得分:0)

您需要在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();
    }
}}

答案 2 :(得分:0)

&&运算符是逻辑AND

输入值不能小于1520且大于3999。 我想你想检查x是否小于1520或大于3999。

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

x<1520 || x>3999

答案 3 :(得分:0)

您可以按照以下方式更改代码(注意,我将&amp;&amp;&amp;更改为||,因为没有数字大于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();
    }
}