奇数判断,一个很简单的程序,但里边暗藏玄机啊。。。
一个负奇数对2取余,结果是-1。
有种错误奇数判断写法是这样的:
public class IsOddTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(isOdd(1));
System.out.println(isOdd(0));
System.out.println(isOdd(2));
System.out.println(isOdd(-1));
System.out.println(isOdd(-2));
}
private static String isOdd(int i) {
if(i % 2 != 1) {
return "is not an odd";
} else {
return "is an odd";
}
}
}
输出为:
is an odd
is not an odd
is not an odd
is not an odd
is not an odd
此时连-1都成为了不是奇数。所以这种做法是有大大的bug滴。
正确的应该是:
public class IsOddTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("-----------------------");
System.out.println(isOddRight(1));
System.out.println(isOddRight(0));
System.out.println(isOddRight(2));
System.out.println(isOddRight(-1));
System.out.println(isOddRight(-2));
System.out.println("-----------------------");
System.out.println(-1 % 2);
System.out.println(-2 % 2);
}
private static String isOddRight(int i) {
if(i % 2 != 0) {
return "is an odd";
} else {
return "is not en odd";
}
}
}
输出为:
-----------------------
is an odd
is not en odd
is not en odd
is an odd
is not en odd
-----------------------
-1
0
输出-1%2也能看出结果为-1,而不是1;
判断奇数偶数应该看对2取余后与0进行比较。。。
分享到:
相关推荐
#### 表达式谜题:奇数判断误区 在探讨Java编程中的谜题时,我们首先遇到的是关于奇数判断的一个常见陷阱。根据“Java谜题”一书的中文版描述,一个简单的函数`public static boolean isOdd(int i) { return i % 2 ...
8. 质数与合数的误区:奇数不一定是质数,比如9和15;偶数不一定是合数,如2;质数不一定是奇数,2是唯一的偶数质数;合数不一定是偶数,如9和15。 9. 判断题:所有偶数都是合数是错误的,因为2是偶数且是质数;...
本节讨论了一个常见的编程误区,即如何正确判断一个整数是否为奇数。通常,开发人员会认为可以通过模运算(%)来判断一个整数是否能被2整除。然而,在Java中,模运算的处理方式对于负数而言存在一些特殊的规则,这...
#### 谜题1:奇数性的判断误区 在Java编程中,判断一个整数是否为奇数看似简单,但实则隐藏着潜在的陷阱。一个常见的方法是使用模运算符(`%`),如以下代码所示: ```java public static boolean isOdd(int i) { ...
关于质数和合数的几个常见误区在题目中也有所涉及: 1. 不是所有奇数都是质数,例如9、15等奇数是合数。 2. 不是所有偶数都是合数,2是唯一的偶数质数。 3. 在1~100中,除了质数外,1并不是合数,它是一个特殊的单位...
- **数的性质**:澄清关于因数、倍数、质数、合数、奇数和偶数的一些常见误区,如一个数的倍数个数无限,一个数的因数个数有限,质数不一定是奇数,合数也不一定是偶数,任何非零自然数至少有1和它自身两个因数。...
2. 判断题部分纠正了一些常见的数学误区,如: - 第1题长方体的面可能是正方形。 - 第2题无限小数不一定是循环小数。 - 第3题只有一组对边平行的四边形是梯形。 - 第4题所有奇数不都是质数,例如9是奇数但不是...
例如,判断一个整数是否为奇数时,使用`return i % 2 == 1;`可能看似正确,但实际上对于负奇数来说,这会导致错误的结果。正确的判断奇数的方法应该是`return i % 2 != 0;`。 取余操作符的使用需要注意其结果的符号...
这一环节也包括判断题,让学生辨别有关素数、合数、奇数和偶数的常见误区。 第四关则要求学生填写适当的素数以完成等式,如10=3+7,18=11+7,26=13+13,30=7+23,这加深了对素数的理解。 第五关涉及到因数和倍数的...
判断题中,错误的例题指出了一个常见误区,即个位数是3的数并不一定是3的倍数,因为13就不是3的倍数。正确的例题则强调了个位数是3的数必定是奇数,因为奇数乘以2得到的结果必然是偶数。 最后,练习中还包含了寻找...
接下来的判断题测试了一些关于质数和合数的常见误区,如错误地认为所有质数都是奇数,所有偶数都是合数,以及自然数不是质数就是合数。实际上,2是唯一的偶数质数,而1既不是质数也不是合数。同时,两个质数相加可能...
本文详细探讨了Java中关于奇数检测和浮点数运算的常见误区。通过对这些陷阱的理解与规避,我们可以编写出更加可靠和高效的代码。在进行货币计算时,建议优先考虑使用 `BigDecimal` 类来避免精度问题。同时,在设计...
在Java编程中,判断一个整数是否为奇数通常会想到使用取余运算符`%`。然而,这个看似简单的操作却隐藏着容易被忽视的陷阱。在处理负整数时,取余运算符的行为会导致预期之外的结果。例如,我们有以下代码片段: ```...
在判断题中,学生需要识别和区分分数的基本定义、三角形与平行四边形面积的关系以及奇数和质数的不同,这样的问题设置有助于学生澄清概念,避免常见的误区。 选择题部分则进一步提升了难度,通过对长方体框架构建、...
最后,课件通过一系列判断题来帮助学生辨析关于质数和合数的一些常见误区。它纠正了一些错误的概念,如质数不一定是奇数(2是唯一的偶数质数),合数不一定是偶数(9是奇数合数),同时明确了1既不是质数也不是合数...
**实例描述**:一个用于检测整数是否为奇数的方法`isOdd`,通过取余操作符(`%`)判断传入的整数`i`除以2后的余数是否为1。 **知识点详解**: 1. **取余操作符(%)的行为**:在Java中,取余操作符(`%`)的行为...
例如,学生需判断偶数不一定是合数、概率问题、乘积与因数的关系、乘小数不一定使数变小、奇数不一定是质数等。在这些问题中,学生不仅要准确理解数学性质,还要能够分辨易混淆的概念。这有助于学生澄清数学中常见...