在没有模运算符的Java中测试偶数
Posted
技术标签:
【中文标题】在没有模运算符的Java中测试偶数【英文标题】:Testing for even numbers in Java without modulo operator 【发布时间】:2012-11-26 17:58:55 【问题描述】:我将如何在 Java 中做到这一点?判断一个数是否能被 2 整除,如果最后一位是偶数。 (0,2,4,6,8) 示例:128 是,129 不是
【问题讨论】:
【参考方案1】:使用按位运算and
if( (number&1) == 0)
位与运算符 &
&(按位与)运算符将其第一个操作数的每一位与 第二个操作数的对应位。如果两个位都是 1,则 结果的相应位设置为 1。否则,它设置 对应的结果位为 0 (source)。
在二进制格式中,偶数的最低有效位为零。知道这一点并使用 & 运算符,您可以找出它是否是偶数。
所以它需要一个数字 ..abcdy 并与 ..00001 进行比较,如果 y 为零,则 ..abcdy & ..00001 也为零,因此是偶数。
【讨论】:
【参考方案2】:使用按位运算符查看最右边的位是否为 1,然后不是 1
执行逻辑与(例如)
yourNumber & 1
【讨论】:
【参考方案3】:检查最低有效位:
boolean even = (x & 1) == 0;
对于偶数,LSB 是 0
,对于奇数是 1
,就像十进制数的最低有效位是 0
,如果它可以被 10
整除。
【讨论】:
【参考方案4】:if((n|1)==n)
System.out.println("odd");
else
System.out.println("even");
原因:如果 LSB 为 1,则数字为奇数,否则为奇数。当 n|1 完成时,奇数的 LSB 保持不变,因此结果数不变,而偶数的 LSB 变为 1,从而改变了数。
【讨论】:
【参考方案5】:我的路;)
公共类 Even_Odd
/**
* @param args
*/
public static void main(String[] args)
int val=550;
// TODO Auto-generated method stub
while(val>=0)
if(val==1)
System.out.println("Odd Number");
else if(val==0)
System.out.println("Even Number");
val=val-2;
// System.out.println(val);
【讨论】:
这很酷.. 但是如果你有一个 15-20 位数字,while 循环会执行多少次。性能很糟糕。你应该学习更好的做事方式,尽管一开始很难学习。不只是你,而是作为一个程序。r【参考方案6】:将数字除以 2 并乘以答案 2,如果得到原始数字,则数字为 “偶数”,否则那么数字是“奇数”
public class EvenOrOdd
public static void main(String args[])
int value = 129;
if((value/2)*2==value)
System.out.println("The Given Number \""+value+"\" is Even");
else
System.out.println("The Given Number \""+value+"\" is Odd");
【讨论】:
【参考方案7】:import java.io.*;
import java.util.*;
public class CheckNumber
public static void main(String... args)throws IOException
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please enter the number to check even or odd");
int number=Integer.parseInt(br.readLine());
String temp=number+""; //convert number to string
char ch=temp.charAt(temp.length()-1); //get last character
temp=ch+"";
if(temp.equals("0") || temp.equals("2") || temp.equals("4") || temp.equals("6") || temp.equals("8")) //check last number is even
System.out.println("Number is even");
else
System.out.println("Number is odd");
【讨论】:
以上是关于在没有模运算符的Java中测试偶数的主要内容,如果未能解决你的问题,请参考以下文章