我只是想知道是否有办法阻止用户输入负数或超过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));
}
}
}
答案 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)范围内。