0

誰かが if ステートメントの条件を説明できますか? 私は何&&をしているのか知って||いますが、正しく計算する方法がわかりません。私はまぐれでそれを正しく理解しました.なぜそれが何をするのかを理解したいだけです.

import java.util.Scanner;

public class LeapYear {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        System.out.print("Give year: ");
        int year = Integer.parseInt(lukija.nextLine());
        if (year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ) ) { 
            System.out.println("Year is leap year");
        } else {
            System.out.println("Year is not a leap year..");
        }
    }
}
4

6 に答える 6

2

の最初の部分if

    //this one----//
if (year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ) )

その年が実際にうるう年かどうかを判断します。これらは 4 年後に毎年発生するため、最初のチェックで、年を 4 で割る係数がゼロであることを確認します。

次に、2 番目の部分では、100 年ごとに同様のテストを行います (閏年ではありません)。

                      //Here ---------//
if (year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ) )

その年が実際に閏年である場合、400年ごとに例外があります。

                                          //Here --------//
if (year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ) )

簡単に言うと、このステートメントは、year400 で完全に割り切れる場合を除いて、変数が 4 で完全に割り切れるが 100 で割り切れない場合に、変数が閏年を表すことを定義します。

于 2012-12-26T13:45:54.150 に答える
1
year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 )

year % k ==0年が k で割り切れることを意味します。

ここでは、評価は短絡アプローチに従います

では A && B、B は、A が true と評価された場合にのみ評価されます。それ以外の場合、B は評価されません。

ではA || B、A が false の場合にのみ B が評価されます。それ以外の場合、A の結果に関係なく、結果は true になります。

于 2012-12-26T13:45:09.130 に答える
0

で割り切れるm % n == 0という意味です。残りは、4 年ごと (正確な倍数) であるグレゴリオ暦の定義に従いますが、400 年ごとでない限り、100 年ごとではありません。たとえば、2000 年は閏年でした。2100はありません。mn

これにより、平均で 365.2425 日の長さの年が得られます。

于 2012-12-26T13:45:01.183 に答える
0
// divisible by 4
isLeapYear = (year % 4 == 0);

// divisible by 4 and (divisible by not 100 or divisible by 400 (any one should be true))
isLeapYear = isLeapYear && (year % 100 != 0 || year % 400 == 0);
于 2012-12-26T13:45:14.433 に答える
0

これは、ウィキペディアから取得したうるう年計算アルゴリズムの擬似コードです。

if year modulo 400 is 0 then
   is_leap_year
else if year modulo 100 is 0 then
   not_leap_year
else if year modulo 4 is 0 then
   is_leap_year
else
   not_leap_year

&&条件は、Javaと||演算子を使用して 1 行でアルゴリズムを実行し、オペランドを適切にグループ化することだけです

于 2012-12-26T13:46:27.037 に答える
0

A leap year is any year that can be evenly divided by 4 except if it can can be evenly divided by 100, except if it can be evenly divided by 400. Modulo arithmetic is used here to check that the test year divides evenly into these 2 numbers.

于 2012-12-26T13:47:21.903 に答える