2

私はまだ Java を学習中で、立ち往生してエラーが発生しています。誰かがこれを行う最善の方法の解決策を手伝ってもらえますか?

    import java.util.Scanner;

    public class LeapYear2 {

    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int year;
    year = scan.nextInt();
    boolean boolVar1,boolVar2,boolVar3;
    boolVar1 = (year / 4);
    boolVar2 = (year / 100);
    boolVar3 = (year / 400);
    if (boolVar1 == true && boolVar2 == true && boolVar3 == true)
    {
        System.out.println("This is a leap year.");
    }
    else if (boolVar1 == true && boolVar2 == true && boolVar3 != true)
    {
        System.out.println("This is not a leap year.");
    }
    else if (boolVar1 == true)
    {
        System.out.println("This is a leap year.");
    }
    else
    {
        System.out.println("This is not a leap year.");
    }
    }

    }
4

6 に答える 6

1

式を作成するには、明示的な比較が必要ですbooleantrueonとの明示的な比較は必要ないbooleanため、コードは次のようになります。

boolean boolVar1,boolVar2,boolVar3;
boolVar1 = (year % 4) == 0;
boolVar2 = (year % 100) == 0;
boolVar3 = (year % 400) == 0;
if (boolVar1 && boolVar2 && boolVar3)
{
    System.out.println("This is a leap year.");
}
else if (boolVar1 && boolVar2 && !boolVar3)
{
    System.out.println("This is not a leap year.");
}
else if (boolVar1)
{
    System.out.println("This is a leap year.");
}
else
{
    System.out.println("This is not a leap year.");
}

boolVar != trueboolVar == falseは と同等であることに注意してください!boolVar

于 2013-08-25T19:24:01.967 に答える
1

これにはモジュロ法を使用します。

if(year % 4 == 0){
    System.out.println("This is a leap year.");
}

等々。私が見ることができることから、このために 3 つの個別の int 型を宣言する必要はありません。これを各条件ステートメントで再利用するだけです。

于 2013-08-25T19:24:21.853 に答える
0

非常に多くの条件を計算するのではなく、次のコードを入力するだけです

if(year%4==0)
System.out.println("The given year is leap year");
else
System.out.println("The given year is not leap year");

int 値と boolean の間で立ち往生する状況はありません。

于 2013-08-25T19:24:02.207 に答える
0

このコードを使用

boolVar1 = (year % 4) == 0;
boolVar2 = (year % 100) ==0;
boolVar3 = (year % 400) == 0; 

元のバージョンは C で動作していたことに注意してください。

于 2013-08-25T19:25:17.660 に答える