好吧,所以我在寻找某人的code年检查器代码,我想知道为什么他/她在%%4之后马上放== 0。为什么在这里使用modulo(%)。如果您使用a cacculator要找到year年,您需要使用divide(/)来举例说明2000/4 = 500,这样它将使2000成为leap年。.
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();
}
}
答案 0 :(得分:3)
year % 4
的结果是int
。
&&
运算符(和||
)仅针对布尔操作数或可以自动转换为布尔值的操作数(这意味着也可以使用Boolean
)定义。
条件和运算符的每个操作数必须为布尔型或布尔型,否则会发生编译时错误。
没有从int
到boolean
的隐式转换(不同于其他语言,如C,C ++,Python等)。这是一件好事:它会迫使您明确说明转化情况。
因此,您必须自己进行int到boolean转换-例如,使用诸如==
,>=
,<
等的关系运算符,或通过传递{{ 1}}的方法返回一个布尔值。
答案 1 :(得分:2)
如果e | AW(0, e) AE(0, e) AW(1, e) AE(1, e) AW(2, e)
--+-------------------------------------------------
5 | 0 0 0 20 20
4 | 7 7 7 23 24 = max(20 + 1 * 4, 23 + 0 * 4)
3 | 14 14 14 26 28
2 | 21 21 21 29 32
1 | 28 28 28 32 36
0 | 35 35 35 35 40
可以除以4(2012年,2016年,2020年,...),则可以简单地将year % 4
计算为0。
year
等于1,因为整数相除后余数为1。 9 % 4
等于2,10 % 4
等于3,11 % 4
等于0
答案 2 :(得分:2)
当您使用计算器除以4时,您知道如果得到整数答案,则年份可以除以4,这在编程语言中类似,模运算符用于除以零后的余数,如果余数为零(余数== 0),则该数字可被4整除。
并且&&运算符是一种检查所有围绕它的条件是否为true的条件,但条件是肯定的。它必须由条件或技术上布尔(真/假)值或文字包围。并且以模为模的返回值,即0或1或2或3(在这种情况下)不是布尔值。
答案 3 :(得分:1)
year % 4 ==0
将返回boolean
值,年份%4将返回int值。对于if条件,您需要放置一个boolean
表达式。
除年份后,year % 4
将给您余数。因此,您在这里检查它是否等于0
。在编程过程中,检查该数字是否可被4