簡體   English   中英

在Java中使用布爾值測試int變量

[英]Test an int variable with a boolean in Java

我仍在學習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.");
    }
    }

    }

如果你想知道int值是否可以被另一個值整除,你可以這樣做:

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

在Java中,整數和布爾值不可互換(與C之類的語言不同,其中0為false,任何非零值都被視為true)。 您需要使用==這樣的比較運算符。 %運算符是余數函數,它(從代碼的其余部分)看起來就像你想要使用的那樣。

PS將來,當您詢問如何處理錯誤時,如果您在問題中發布了錯誤消息,那將非常有用。

PPS您應該養成給變量起有意義的名字的習慣。 例如,我將取代boolVar1divisibleBy4 ,等等,當你開始編寫更復雜的代碼,這會節省你很多麻煩。

另外,正如其他人所指出的那樣,使用boolean變量b ,可以使用推薦的Java樣式

if (...b...)

代替

if (...b == true...)

if (...!b...)

代替

if (...b == false...)

您不需要所有這些布爾值。 您可以簡單地測試:

if ((year % 4 == 0) && (year % 100 != 0)){
    System.out.println(year + " is a leap year.");
}
else if (year % 400 == 0){
    System.out.println(year + " is a leap year.");
}
else {
    System.out.println(year + " is not a leap year.");
}

您需要進行顯式比較以使表達式為boolean 您不需要在boolean上與true進行顯式比較,因此代碼應如下所示:

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

使用modulo方法。

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

等等。 從我所看到的,您不需要為此聲明3個單獨的int類型。 只需在每個條件語句中重復使用它。

而不是計算這么多條件只需要下面的代碼

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之間徘徊的情況。

使用此代碼

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

請注意,原始版本將在C中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM