检查数字是偶数还是奇数

时间:2011-09-08 01:35:14

标签: java

我如何确定给定数字是偶数还是奇数?我一直想要解决这个问题已经有很长一段时间了,而且还没有到任何地方。

17 个答案:

答案 0 :(得分:185)

您可以使用模数运算符,但这可能很慢。如果它是一个整数,你可以这样做:

if ( (x & 1) == 0 ) { even... } else { odd... }

这是因为低位始终设置为奇数。

答案 1 :(得分:85)

if((x%2)==0)
   // even
else
   // odd

答案 2 :(得分:26)

如果除以2时的余数为0,则为偶数。 %是获得余数的算子。

答案 3 :(得分:24)

余数运算符%将在除以数字后给出余数。

如果n为偶数,则n % 2 == 0为真,如果n为奇数则为假。

答案 4 :(得分:17)

每个偶数都可以被2整除,无论它是否为小数(但小数,如果存在,也必须是偶数)。所以你可以使用%(modulo)运算符,它将左边的数字除以右边的数字并返回余数...

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

答案 5 :(得分:2)

适用于正数或负数

int start = -3;
int end = 6;

for (int val = start; val < end; val++)
{
    // Condition to Check Even, Not condition (!) will give Odd number
    if (val % 2 == 0) 
    {
        System.out.println("Even" + val);
    }
    else
    {
        System.out.println("Odd" + val);
    }
}

答案 6 :(得分:2)

最低有效位(最右边)可用于检查数字是偶数还是奇数。 对于所有奇数,二进制表示形式中最右边的位始终为1。

public static boolean checkOdd(long number){
   return ((number & 0x1) == 1);
}

答案 7 :(得分:2)

以下程序可以处理大数字(大于20的位数)

package com.isEven.java;
import java.util.Scanner;

public class isEvenValuate{

public static void main(String[] args) {            

        Scanner in = new Scanner(System.in);
        String digit = in.next();

        int y = Character.getNumericValue(digit.charAt(digit.length()-1));

        boolean isEven = (y&1)==0? true:false;

        if(isEven)
            System.out.println("Even");
        else
            System.out.println("Odd");

    }
}

这是输出::

  122873215981652362153862153872138721637272
  Even

答案 8 :(得分:1)

您可以使用模数运算符,但这可能很慢。更有效的方法是检查最低位,因为它确定数字是偶数还是奇数。代码看起来像这样:

public static void main(String[] args) {        
    System.out.println("Enter a number to check if it is even or odd");        
    System.out.println("Your number is " + (((new Scanner(System.in).nextInt() & 1) == 0) ? "even" : "odd"));        
}

答案 9 :(得分:1)

如果给定数的模数等于零,则该数为偶数,否则为奇数。下面是执行此操作的方法:

public void evenOrOddNumber(int number) {
  if (number % 2 == 0) {
    System.out.println("Number is Even");
   } else {
    System.out.println("Number is odd");
  }
 }

答案 10 :(得分:1)

我会推荐

  

Java难题者:陷阱,陷阱和案例案例,作者Joshua Bloch   和Neal Gafter

有一个简短的解释,说明如何检查数字是否为奇数。 第一次尝试与@AseemYadav尝试的类似:

public static boolean isOdd(int i) {
     return i % 2 == 1;
}

但正如书中所述:

  

当余数运算返回非零结果时,它具有相同的结果   签名为左操作数

因此,通常,当我们有负的奇数时,我们将得到1而不是-1。因此,我们可以使用@Camilo解决方案,也可以执行以下操作:

i%2

,但是通常最快的解决方案是使用AND运算符,例如@lucasmo,写在上面:

public static boolean isOdd(int i) {
     return i % 2 != 0;
}

@编辑 同样值得指出的是,public static boolean isOdd(int i) { return (i & 1) != 0; } 可以很好地处理负的股利,但是如果除数为负,也可以返回Math.floorMod(int x, int y);

答案 11 :(得分:1)

另一种简单的方法,不使用if / else条件(适用于正数和负数):

int n = 8;
List<String> messages = Arrays.asList("even", "odd");

System.out.println(messages.get(Math.abs(n%2)));

对于奇数号,表达式将返回“1”作为余数,给出

  

messages.get(1)='odd',因此打印'odd'

否则,当表达式出现结果“0”

时,会打印“偶数”

答案 12 :(得分:0)

你可以这样做:

boolean is_odd(int n) {
    return n % 2 == 1 || n % 2 == -1;
}

这是因为Java在其模运算中具有被除数的符号,即左侧:n。 因此,对于负数和正数股息,模数具有它们的符号。

当然,按位操作更快更优化,只需用两三个短字记录代码行,这样做是为了便于阅读。

答案 13 :(得分:0)

以下是完整示例:-

counts[name] += 1

enter image description here

答案 14 :(得分:0)

以下是确定给定数字是偶数还是奇数的示例

import java.util.Scanner;

public class EvenOdd
{
   public static void main(String[] args)
   {
      int a;
      System.out.println("Please enter a number to check even or odd:");
      Scanner sc = new Scanner(System.in);
      a = sc.nextInt();

      if(a % 2 == 0)
      {
         System.out.println("Entered number is an even number");
      }
      else
      {
         System.out.println("Entered number is an odd number");
      }
   }
}

嗯,有很多方法可以确定相同的方法。有关更多示例,请参阅this资源,以查找给定的数字是偶数还是奇数。

答案 15 :(得分:0)

package isevenodd;
import java.util.Scanner;
public class IsEvenOdd {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter number: ");
        int y = scan.nextInt();       
        boolean isEven = (y % 2 == 0) ? true : false;
        String x = (isEven) ? "even" : "odd";  
        System.out.println("Your number is " + x);
    }
}

答案 16 :(得分:0)

    /**
     * Check if a number is even or not using modulus operator.
     *
     * @param number the number to be checked.
     * @return {@code true} if the given number is even, otherwise {@code false}.
     */
    public static boolean isEven(int number) {
        return number % 2 == 0;
    }

    /**
     * Check if a number is even or not using & operator.
     *
     * @param number the number to be checked.
     * @return {@code true} if the given number is even, otherwise {@code false}.
     */
    public static boolean isEvenFaster(int number) {
        return (number & 1) == 0;
    }

source