0

たとえば、ユーザーは、今日が月曜日または火曜日で、スケジュールが現在のシステム時間と比較して (与えられた) 時間枠内にある場合、自分のパスワードを表示できますが、今日が月曜日または火曜日であっても、与えられた時間がたとえば、午後 1 時 30 分から 5 時 30 分までとしましょう。まだその時刻になっていないか、すでに過ぎている場合、彼は自分のパスワードを表示できません。

あなたがドリルを手に入れることを願っています。以下のコードは正常に動作しますが、火曜日と火曜日のように同じ日を 2 回入力すると、競合が発生します。この条件ステートメントを修正するにはどうすればよいですか? ありがとう。

これが私のコードです:

DateTime systemtime = DateTime.Now;
DateTime timestart = Convert.ToDateTime(txtTimestart.Text);
DateTime timeend = Convert.ToDateTime(txtTimeend.Text);
var systemday = DateTime.Now.DayOfWeek.ToString();
var day1 = Convert.ToString(txtDay1.Text);
var day2 = Convert.ToString(txtDay2.Text);

if (systemday != day1 || systemday != day2)
{
    if (systemtime < timestart || systemtime > timeend)
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    else
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
}
else
{
    if (systemtime < timestart || systemtime > timeend)
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    else
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
}
4

1 に答える 1

2

あなたの例を挙げると、このコード行は、現在の日(システム日)が月曜日または火曜日でない場合を意味します。

if (systemday != day1 || systemday != day2)

今日が火曜日の場合、最初の比較が真になるのは月曜日ではなく、if ブロックに入ります。今日が月曜日の場合、2 番目の比較 (Systemday != day2) が true になるのは火曜日ではありません。今日が月曜日と火曜日でない場合、両方の比較 (systemday != day1 || systemday != day2) が true になります。要するに、あなたのコードは他のものに分類されることはありません。

今あなたの問題の使用のために

if (systemday == day1 || systemday == day2)
{ 
    if(systemtime>=timestart && systemtime <=timeend)
    {
        MessageBox.Show("Your password is ...", "Get Password Success", MessageBoxButtons.OK, MessageBoxIcon.None);
        return;
    }
    else
    {
        MessageBox.Show("You are not authenticated to view your password.", "Get Password Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
}
于 2012-07-21T05:49:41.033 に答える