-2

ユーザーが負の数または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));
        }
    }
}
4

2 に答える 2

0

JFormattedTextFieldを追加して、文字を最大長4の数字に制限できます。これは、ユーザーがマイナス文字を入力できないため、負の数をカバーします。

別の解決策は、単純なJTextFieldでInputVerifierを使用することです。

于 2012-06-17T18:47:43.450 に答える
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)の範囲内にあるためです。

于 2012-06-17T19:22:11.453 に答える