在不使用条件代码的情况下确定数字是奇数还是偶数

时间:2013-12-20 13:54:58

标签: java bitwise-operators

如何在Java中使用if条件或三元运算符来查找数字是奇数还是偶数?

这个问题是我的老师给出的。他还给我一个暗示,通过使用按位运算符可以实现。

13 个答案:

答案 0 :(得分:15)

有几种方法可以不使用if并获得与使用if时相同的行为,例如三元运算符condition ? valueIfTrue : valueIfFalseswitch/case

但是要棘手,你也可以使用数组并尝试将我们的值的某些转换映射到正确的数组索引。在这种情况下,您的代码可能看起来像

int number = 13;
String[] trick = { "even", "odd" };
System.out.println(number + " is " + trick[number % 2]);

输出:

13 is odd

您可以使用number % 2更改number & 1以使用您老师的建议。可以找到它的工作原理说明here

答案 1 :(得分:10)

考虑二进制格式的数字表示(例如,5将是0b101)。 奇数的单数为“1”,偶数为零。所以你要做的就是按位 - 并且只用1来提取那个数字,并检查结果:

public static boolean isEven (int num) {
    return (num & 1) == 0;
}

答案 2 :(得分:6)

int isOdd = (number & 1);      
如果数字为奇数,则

isOdd1,否则为0

答案 3 :(得分:2)

你的意思是这样吗?

boolean isEven(int value) {
  return value % 2 == 0;
}

boolean isOdd(int value) {
  return value % 2 == 1;
}

答案 4 :(得分:0)

刚看到'Without using IF'

boolean isEven(double num) { return (num % 2 == 0) }

答案 5 :(得分:0)

每个奇数在其二进制表示的末尾都有1个。

示例:

public static boolean isEven(int num) {
    return (num & 1) == 0;
}

答案 6 :(得分:0)

只是对已定义过程的快速包装......

public String OddEven(int n){
String oe[] = new String[]{"even","odd"};
        return oe[n & 1];
}

答案 7 :(得分:0)

我会用:

( (x%2)==0 ? return "x is even" : return "x is odd");

一行代码。

答案 8 :(得分:0)

# /* **this program find number is odd or even without using if-else,
## switch-case, neither any java library function...*/
##//find odd and even number without using any condition

  class OddEven {
       public static void main(String[] args) {
       int number = 14;
       String[] trick = { "even", "odd" };
       System.out.println(number + " is " + trick[number % 2]);
     }
 }

  /**************OUTPUT*************
  // 14 is even
  // ...................
  //13 is odd

答案 9 :(得分:0)

方法1:

System.out.println(new String[]{"even","odd"}[Math.abs(n%2)]); 

方法2:

System.out.println(new String[]{"odd","even"}[(n|1)-n]);

方法1与接受的答案的不同之处在于它也考虑了负数,这也被认为是偶数/奇数。

答案 10 :(得分:0)

enter image description here

import java.util.Scanner;
public class EvenOddExample
{
    public static void main(String[] args) 
    {
        System.out.println("\nEnter any Number To check Even or Odd");
        Scanner sc=new Scanner(System.in);

        int no=sc.nextInt();
        int no1=no;
        while (no>1) 
        {   
            no=no-2;
        }       
        if(no==0)
        {
            System.out.println(no1 +" is evenNumber");
        }
        else
        {
            System.out.println(no1 +" is odd Number");
        }

    }
}

答案 11 :(得分:0)

您也可以使用按位移位运算符 (数字>> 1)<< 1 ==数字,然后甚至奇数

答案 12 :(得分:0)

嗯,是的,你可以使用按位运算符。这是一个例子,

public class EvenOddBitwise
{
   public static void main(String[] args)
   {
      int number = 64;
      if((number & 1) == 1)
      {
         System.out.println(number + " is Odd.");
      }
      else
      {
         System.out.println(number + " is Even.");
      }
   }
}