我如何确定给定数字是偶数还是奇数?我一直想要解决这个问题已经有很长一段时间了,而且还没有到任何地方。
答案 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)
答案 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;
}