Java 为什么需要==0,当我删除它时会得到错误;运营者及&;对于参数类型int,boolean";未定义;

Java 为什么需要==0,当我删除它时会得到错误;运营者及&;对于参数类型int,boolean";未定义;,java,Java,好的,所以我在看某人的闰年检查器代码,我想知道为什么他/她在第%4年之后放==0。还有为什么这里要用模数(%)。。如果使用计算器查找闰年,则需要使用除法(/),例如2000/4=500,因此它将使2000成为闰年 import java.util.Scanner; public class LeapChecker { public void Check(){ Scanner input = new Scanner(System.in); System.

好的,所以我在看某人的闰年检查器代码,我想知道为什么他/她在第%4年之后放==0。还有为什么这里要用模数(%)。。如果使用计算器查找闰年,则需要使用除法(/),例如2000/4=500,因此它将使2000成为闰年

import java.util.Scanner;

public class LeapChecker {
    public void Check(){
        Scanner input = new Scanner(System.in);

        System.out.println("Type a year: ");
        int year = input.nextInt();

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

    }

    public static void main(String[] args) {
         LeapChecker leap = new LeapChecker();
        leap.Check();
    }
}

简单地说,如果
年份
可平均除以4(2012年、2016年、2020年,…),则
年份%4的计算结果为0


9%4
等于1,因为整数除法后会有一个1的重数
10%4
等于2,
11%4
等于3,
12%4
等于0

因为
year%4
如果
year
可以被4等分(2012年、2016年、2020年,…)


9%4
等于1,因为整数除法后会有一个1的重数
10%4
等于2,
11%4
等于3,
12%4
等于0

当您使用计算器除以4时,您知道如果您得到一个整数答案,那么年份可以被4整除,类似地,在编程语言中,如果余数为零(余数==0),则使用模运算符得到除法后的余数,那么这个数字可以被4整除


并且,&&运算符是一个检查围绕它的所有条件是否为真,但条件为是的运算符。它必须由条件或布尔值(真/假)或文字包围。模返回的值,即0或1或2或3(在本例中)不是布尔值

当您使用计算器进行4除运算时,您知道如果您得到一个整数答案,那么年份可以被4除,类似地,在编程语言中,模运算符用于获得除法后的余数,如果余数为零(余数==0),那么数字可以被4除


并且,&&运算符是一个检查围绕它的所有条件是否为真,但条件为是的运算符。它必须由条件或布尔值(真/假)或文字包围。模返回的值,即0或1或2或3(在本例中)不是布尔值

第%4年==0
这将返回一个
布尔值,第%4年将返回一个int值。对于if条件,需要放置一个
布尔表达式


第%4年
将在您划分该年后为您提供剩余部分。因此,这里您要检查它是否等于
0
。在编程过程中,检查该数字是否可被
4
year%4==0
整除的方法将返回一个
布尔值,year%4将返回一个int值。对于if条件,需要放置一个
布尔表达式


第%4年
将在您划分该年后为您提供剩余部分。因此,这里您要检查它是否等于
0
。在编程时,检查该数字是否可被
4
整除的方法是
第%4年的结果是
int

&&
运算符(和
|
)仅为布尔操作数或可自动转换为布尔的操作数定义(这意味着也可以使用
布尔

从:

条件and运算符的每个操作数必须是布尔或布尔类型,否则会发生编译时错误

没有从代码> int >到<代码>布尔-< /> >的隐式转换(与C、C++、Python等其他语言不同)。这是一件好事:它迫使您明确转换


因此,您必须自己进行int到boolean的转换-例如,使用关系运算符,如
=
=
第%4年的结果是
int

&&
运算符(和
|
)仅为布尔操作数或可自动转换为布尔的操作数定义(这意味着也可以使用
布尔

从:

条件and运算符的每个操作数必须是布尔或布尔类型,否则会发生编译时错误

没有从代码> int >到<代码>布尔-< /> >的隐式转换(与C、C++、Python等其他语言不同)。这是一件好事:它迫使您明确转换


因此,您必须自己进行int到boolean的转换-例如,使用关系运算符,如
=
=
,因此如果您使用2001年的计算器,您会得到什么?因为模运算符相当于
a-(a/b)
,因此如果它返回0(因此,代码< >=0)/CODE >,A可以被BunaC+C和C++、Python等所分割,java不把零和非零整数分别当作假布尔值和真布尔值,这是一件好事。™.如果一年是400的倍数或4的倍数,但不是100的倍数,那么它就是闰年。因此,代码中的条件1正在检查一年是否是4的倍数而不是100的倍数。通过使用模运算符,我们可以找出余数,并且余数应该为零,以便可以被4整除。这就是为什么%4==0条件是正确的e、 @Jennifer谢谢!如果你使用2001年的计算器,你会得到什么?因为模运算符等于
a-(a/b)
,所以如果它返回0(因此,代码< >=0)/CODE >,A可以被BunaC+C和C++、Python等所分割,java不把零和非零整数分别当作假布尔值和真布尔值,这是一件好事。™.如果一年是400的倍数或4的倍数,但不是100的倍数,那么一年就是闰年。因此,代码中的条件1检查一年是否是4的倍数而不是100的倍数。通过使用模运算符,我们可以找出余数和此余数