我們?cè)趯W(xué)java的基本運(yùn)算符時(shí),經(jīng)常會(huì)用到 " % " 運(yùn)算符。還記得我們是如何判斷一個(gè)數(shù)是否為偶數(shù)的嗎?
我們之前的代碼是這樣的value%2==0?"偶數(shù)":"奇數(shù)";
那么現(xiàn)在我們突發(fā)奇想將代碼改為value%2==1?"奇數(shù)":"偶數(shù)";
是否可以成功呢?
動(dòng)手寫個(gè)demo試試:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入多個(gè)數(shù)字判斷奇偶:");
while(input.hasNextInt()) {
int value = input.nextInt();
String result = value % 2 == 1 ? "奇數(shù)" : "偶數(shù)";
System.out.println("輸入為:" + value + " --> " + result);
}
}
運(yùn)行結(jié)果:
請(qǐng)輸入多個(gè)數(shù)字判斷奇偶:0 1 -1 2
輸入為:0 --> 偶數(shù)
輸入為:1 --> 奇數(shù)
輸入為:-1 --> 偶數(shù)
輸入為:2 --> 偶數(shù)
What? -1 是偶數(shù)?
回過(guò)頭來(lái)看看我們之前的那種寫法:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入多個(gè)數(shù)字判斷奇偶:");
while(input.hasNextInt()) {
int value = input.nextInt();
String result = value % 2 == 0 ? "偶數(shù)" : "奇數(shù)";
System.out.println("輸入為:" + value + " --> " + result);
}
}
運(yùn)行結(jié)果:
??請(qǐng)輸入多個(gè)數(shù)字判斷奇偶:0 1 -1 2
??輸入為:0 --> 偶數(shù)
??輸入為:1 --> 奇數(shù)
??輸入為:-1 --> 奇數(shù)
??輸入為:2 --> 偶數(shù)
查閱資料才知道,原來(lái)java中的求余操作是這么算出來(lái)的:
//模擬求模運(yùn)算, dividend表示被除數(shù),divisor表示除數(shù)
public static int remainder(int dividend,int divisor){
return divide-divide/divisor*divisor
}
我們把 -1 和 2 分別作為dividend
和divisor
傳入這個(gè)方法發(fā)現(xiàn)求模返回為-1
,當(dāng)然不等于1啦!
知道原因了,解決方法就是以后我們判斷奇偶時(shí)還是老老實(shí)實(shí)用 判斷是否等于0
才為偶數(shù),否則為奇數(shù)吧。