如何防止输入负数或超过4位的数字

时间:2012-06-17 18:26:14

标签: java

我只是想知道是否有办法阻止用户输入负数或超过4位的数字。无论如何还要把这个逻辑放到GUI中吗?这是我的代码:

import java.util.Scanner;
public class EasterSunday
{
    public static void main(String[] args)
    {
        int year; // declarations
        Scanner input = new Scanner(System.in); //start Scanner
        System.out.println("Enter in a year to find out the day and month of that Easter Sunday.");
        year = input.nextInt();
        int a = year%19;
        int b = year%4;
        int c = year%7;
        int d = (19 * a + 24) %30;
        int e = (2 * b + 4 * c + 6 * d + 5) %7;
        int eSunday = (22 + d + e);
        if ((year >= 1900) && (year <= 2099) && (year != 1954) && (year != 1981) && (year != 2049) && (year != 2076))
        {
            if (eSunday <= 30)
                System.out.println("Easter Sunday in " + year + " is March, " + eSunday);
            else
                System.out.println("Easter Sunday in " + year + " is April, " + (eSunday - 30));
        }
        else
        {
            if (eSunday <= 30)
                System.out.println("Easter Sunday in " + year + " is March, " + (eSunday - 7));
            else
                System.out.println("Easter Sunday in " + year + " is April, " + (eSunday - 37));
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以添加JFormattedTextField并将字符限制为最大长度为4的数字。这包括负数,因为用户无法输入减号。

另一种解决方案是在简单的JTextField上使用InputVerifier

答案 1 :(得分:0)

简单的答案是使用while循环,而不允许用户退出,直到他输入符合您标准的数字。

number = -1;
// while either the non-negativity or four-digit condition is not met
while(number < 0 || number > 9999){
    number = requestInput(user);
}

使用requestInput(user)函数请求来自用户的输入。 number = -1的初始化是必要的,因为如果你只是声明它而不初始化它(如果内存服务),它将导致你的IDE抱怨它可能没有被初始化,或者程序将完全跳过while循环因为0在(0,9999)范围内。