有一个公认的常识就是能够被2整除的整数是偶数,不能被2整除的是奇数。我们先来看一个例子:
class OddEven
{
public static void Main()
{
string line = null;
Console.WriteLine("请输入数字判断奇偶,数字之间用空格隔开:");
while ((line = Console.ReadLine()) != null)
{
var numArr = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
foreach (var numStr in numArr)
{
var value = int.Parse(numStr);
Console.WriteLine(numStr + "是" + (value % 2 == 1 ? "奇数" : "偶数"));
}
Console.WriteLine("请输入数字判断奇偶,数字之间用空格隔开:");
}
}
}
运行结果如下:
请输入数字判断奇偶,数字之间用空格隔开:
0 1 2 3 4 5
0是偶数
1是奇数
2是偶数
3是奇数
4是偶数
5是奇数
请输入数字判断奇偶,数字之间用空格隔开:
-5 -4 -3 -2 -1 0
-5是偶数
-4是偶数
-3是偶数
-2是偶数
-1是偶数
0是偶数
我们发现我们输入的负数 比如-5 -4等输出的结果是偶数,那么为什么呢?
我们先来了解一下取余(%)算法,最基本的模拟代码如下:
/// <summary>
/// 求余模拟运算
/// </summary>
/// <param name="dividend">被除数</param>
/// <param name="divisor">除数</param>
/// <returns>求余的结果</returns>
public static int Remainder(int dividend, int divisor)
{
return dividend - dividend / divisor * divisor;
}
看到求余的模拟运算,可知当输入-5时 运算结果是-1。(-5- -5/2*2)=(-5- -4)=-1 当然不等于1了。原理明白了,修正也很简单,改变判断 ==0即可。
修改后的代码如下:
class OddEven
{
public static void Main()
{
string line = null;
Console.WriteLine("请输入数字判断奇偶,数字之间用空格隔开:");
while ((line = Console.ReadLine()) != null)
{
var numArr = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
foreach (var numStr in numArr)
{
var value = int.Parse(numStr);
Console.WriteLine(numStr + "是" + (value % 2 == 0 ? "偶数" : "奇数"));
value = Remainder(-5, 2);
}
Console.WriteLine("请输入数字判断奇偶,数字之间用空格隔开:");
}
}
/// <summary>
/// 求余模拟运算
/// </summary>
/// <param name="dividend">被除数</param>
/// <param name="divisor">除数</param>
/// <returns>求余的结果</returns>
public static int Remainder(int dividend, int divisor)
{
return dividend - dividend / divisor * divisor;
}
}
运行后的结果如下:
请输入数字判断奇偶,数字之间用空格隔开:
0 1 2 3 4 5
0是偶数
1是奇数
2是偶数
3是奇数
4是偶数
5是奇数
请输入数字判断奇偶,数字之间用空格隔开:
-5 -4 -3 -2 -1 0
-5是奇数
-4是偶数
-3是奇数
-2是偶数
-1是奇数
0是偶数
以后还要加深基础知识和计算机基础知识的理解。以上虽然使用C#语言写的,但是同样适用于java