0

パスワード配列があるとしましょう...

      var pass = new int[5];
        pass[0] = 111111;
        pass[1] = 222222;
        pass[2] = 333333;
        pass[3] = 444444;
        pass[4] = 555555;

そして、現在時刻の検証。たとえば、午前 7:30:00 から午前 11:30:00 までのスケジュールがあり、まだ 7:30 になっておらず、11:30 を過ぎている場合は、パスワードを取得できません。しかし、その時間枠の間に、大丈夫です。パスワードを取得できます。そして、Button1 がクリックされると (w/c は既に認証されていることを意味します - 正確な時間)、次のようなメッセージ ボックスが表示されます。

パスワードは 111111 です。

すべてのパスワードが使い果たされるまで、というように、パスワード 111111、222222、333333 などに戻ります...どうすればよいですか? どのような時間形式ですか?時間比較が苦手です。ありがとう。

4

1 に答える 1

2

関数isValidTimeは、1日の時間帯に時間をチェックします。

以下に示すように、モジュラー演算を使用してパスワードをラップスルーできます。

以下は私のために働きます:

    private int currentPassword = -1;
    private int[] passwords = new int[]{111111,222222,333333,444444,555555};

    private DateTime startTime = new DateTime(2012, 7, 18, 22, 0, 0);
    private DateTime endTime = new DateTime(2012, 7, 18, 22, 15, 0);

    private void button1_Click(object sender, EventArgs e)
    {
        if (isValidTime(DateTime.Now))
        {
            currentPassword++;
            currentPassword = currentPassword % passwords.Length;

            MessageBox.Show(passwords[currentPassword].ToString());
        }
        else
        {
            MessageBox.Show( "Try again at a different time" );
        }
    }

    private bool isValidTime( DateTime now )
    {
        if ( startTime.TimeOfDay.CompareTo(now.TimeOfDay) <= 0)
        {
            if ( now.TimeOfDay.CompareTo(endTime.TimeOfDay) <= 0)
            {
                return true;
            }
        }
        return false;
    }

新しいWindowsフォームを開始し、button1を追加するだけで、このコードが機能するはずです。

于 2012-07-19T04:16:45.997 に答える