0
public class LeapYear_2 {

    public static void main(String[] args) {

    int year = 1900;                
        while (year <= 2100 && (year % 4 == 0)){

            System.out.println(year + " Is a Leap Year");
            year++;

            System.out.println(year + " Is not a leap year");
            year++;
        }   

    }
}

コードの何が問題なのか知りたいのですが? 1900 年から 2100 年までは閏年を表示し、閏年を表示しないプログラムを作成したいと考えています。

while を多くの条件で使用する方法がわかりません... このプログラムが希望どおりに機能するには、while ループに多くの条件が必要なようです。

4

5 に答える 5

0

楽しみのためのチートコード;)

int count = 0;
for (int i = 1900; i < 2100; i++){
 if (count == 4){
  System.out.println(i + " Is a Leap Year");
  count = 0;
  }
  count++;
}
于 2013-09-13T09:12:15.197 に答える
0

提示されたほとんどの回答で、1900年がうるう年として表示されることを付け加えておきます。これは、その年が 4 で割り切れるかどうかを確認するだけのチェックがあるためですが、100 年の年も 400 で割り切れる必要があります。したがって、1900 年はうるう年ではなく、2000 年はうるう年です。

条件は実際には

if(year % 4 == 0 && !(year % 100 == 0 && year % 400 != 0))
  // now we have a leap year.

さらに、私がやっている間、次のこともできます

Calendar cal = Calendar.getInstance();   
cal.set(Calendar.YEAR, year);   
if(cal.getActualMaximum(DAY_OF_YEAR) > 365)
  // leap year.

しかし、モジュロ演算と比較して、200回繰り返すのはかなりコストがかかります。

于 2013-09-13T09:28:34.363 に答える
0

この単一の条件は、ここで必要に応じて機能します。ここでは三項演算子を使用しました。これは、else 条件の場合と同じように機能します。基本的な構文は次のとおりです。your condition ? true : false

in your case 
    condition : year % 4==0 
    true :  year Is a Leap Year
    false : year Is a not Leap Year


            int year = 1900;                
            while (year <= 2100){
                System.out.println(year % 4==0 ? year+" Is a Leap Year" :year + " Is not a leap year" );
                year++;
            }
于 2013-09-13T09:15:47.810 に答える