在Java中使用布尔值测试int变量

时间:2013-08-25 19:18:25

标签: 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.");
    }
    }

    }

6 个答案:

答案 0 :(得分:4)

如果您想知道int值是否可以被另一个值整除,您可以这样做:

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

在Java中,整数和布尔值不可互换(与C之类的语言不同,其中0为false且任何非零值都被视为true)。您需要使用==之类的比较运算符。 %运算符是余数函数,它(从其余代码中)看起来就像你想要使用的那样。

P.S。将来,当您询问如何处理错误时,如果您在问题中发布了错误消息,那将非常有用。

P.P.S。你应养成为变量赋予有意义名称的习惯。例如,我会将boolVar1替换为divisibleBy4等。当您开始编写更复杂的代码时,这将为您节省很多麻烦。

另外,正如其他人所指出的那样,使用boolean变量b,建议使用Java样式

if (...b...)

而不是

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

if (...!b...)

而不是

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

答案 1 :(得分:1)

你不需要所有那些布尔。你可以简单地测试一下:

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.");
}

答案 2 :(得分:1)

您需要进行显式比较才能制作表达式boolean。您不需要在true上与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

答案 3 :(得分:1)

使用modulo方法。

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

等等。从我所看到的,您不需要为此声明3个单独的int类型。只需在每个条件语句中重复使用它。

答案 4 :(得分: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值和布尔值之间徘徊的情况。

答案 5 :(得分:0)

使用此代码

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

请注意,原始版本可以在C中使用。