そこで、この宿題を使ってクラスのコンタクタを作成しDate
、データが有効かどうかを確認しました。チェックでは、うるう年の可能性を検討する必要があります。だから私は変数を手に入れましたIsValidInJan
:
boolean IsValidInJan = month != 8 ||
(year % 4 == 0 && year % 100 != 0 && year % 400 == 0);
次に、データが無効かどうかをチェックするifステートメントがあります(データが無効な場合はifステートメントの本体をアクティブにする必要があり、その逆ではないことに注意してください)
if(year > current_year || (daysByMonth[month] < day && !IsValidInJan)|| day < 0 )
それのほとんどを無視してください。重要なのは、角かっこ内(if文の中央)に次の条件付きロジックが必要なことです。
場合は!IsValidInJan
trueで、その後、全体stamentですtrue
(カッコ内のみ)
場合!IsValidInJan
でfalse
、その場合はチェックdaysByMonth[month] < day
真であるかどうか、結果としてそれを取る(カッコ内のみ)
私はそれをより小さなif
ステートメントに分けたくありません。
どうすればそのようなロジックを実現できますか?
!IsValidInJanがtrueの場合、stament全体がtrueになります(角かっこ内のみ)
!IsValidInJanがfalseの場合、daysByMonth [month] <dayがtrueであるかどうかを確認し、結果としてそれを取得します(括弧内のみ)
これ||
を実現するには、Conditional-OR演算子を使用できます。
条件演算子(||
および&&
)は「短絡」動作を示します。これは、第2オペランドが必要な場合にのみ評価されることを意味します。ドキュメントの詳細情報。
だから、あなたはあなたの表現を次のように書くことができます !IsValidInJan || daysByMonth[month] < day
ここで、第1オペランド!IsValidInJan
が真の場合、第2オペランドは評価されません。
!IsValidInJan
がfalseの場合daysByMonth[month] < day
、その場合にのみ評価され、その結果が式全体の結果として渡されます。
したがって、if
ステートメントは次のように書くことができます。
if(year > current_year || (!IsValidInJan || daysByMonth[month] < day) || day < 0)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加