【问题标题】:Determine whether number is odd or even without using conditional code不使用条件码判断数字是奇数还是偶数
【发布时间】:2013-12-20 13:54:57
【问题描述】:

在Java中不使用if条件或三元运算符,如何判断一个数是奇数还是偶数?

这个问题是我老师给的。他还给了我一个提示,使用按位运算符是可能的。

【问题讨论】:

  • 你确定你的老师说的是without using if condition而不是without using modulo operator吗?
  • 是的,他说没有使用 if-else 条件
  • 免责声明:三元条件运算符 "?:" 是 if-then-else
  • @ToniToniChopper 您的评论使 3 个答案无效:)
  • 您的意思是“奇偶校验”还是“奇偶校验”?他们是两个不同的东西。你的标题说“奇偶校验”,但问题只是说“奇数或偶数”。

标签: java bitwise-operators


【解决方案1】:

有几种方法可以不使用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找到它的工作原理说明。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 那么if(isEven(7)){}??
    • 没关系。但是 if 构造现在只是在调用此方法的外部方法中。我还建议 num & 1 所以 +1
    • @sᴜʀᴇsʜᴀᴛᴛᴀ 7 & 1 == 1 和 1 != 0 所以它会正确返回 false
    • @msam 我说的是使用方法:)
    • @sᴜʀᴇsʜᴀᴛᴛᴀ println(isEven(7)); :)
    【解决方案3】:
    int isOdd = (number & 1);      
    

    如果数字是奇数,isOdd 将为1,否则为0

    【讨论】:

      【解决方案4】:

      你的意思是这样的吗?

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

      【讨论】:

      • 您将如何检查该返回值?
      【解决方案5】:

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

      示例:

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

      【讨论】:

        【解决方案6】:

        刚刚看到'Without using IF'

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            我会使用:

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

            一行代码。

            【讨论】:

              【解决方案9】:

              方法一:

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

              方法二:

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

              方法 1 与公认答案的不同之处在于它也考虑了负数,也考虑了偶数/奇数。

              【讨论】:

                【解决方案10】:

                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");
                        }
                
                    }
                }
                

                【讨论】:

                • 检查数字何时大于 1 number = number -2;
                【解决方案11】:

                您还可以使用按位移位运算符 (number >> 1)

                【讨论】:

                  【解决方案12】:
                  # /* **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
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-11-12
                    • 2021-02-09
                    • 1970-01-01
                    • 2015-05-31
                    • 2021-09-24
                    • 2015-02-13
                    • 2015-07-22
                    相关资源
                    最近更新 更多