Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查数字是偶数还是奇数_Java - Fatal编程技术网

Java 检查数字是偶数还是奇数

Java 检查数字是偶数还是奇数,java,Java,如何确定给定的数字是偶数还是奇数?我想弄明白这个问题已经很久了,但什么都没有得到。如果除以2的余数是0,那么它就是偶数%是获取余数的运算符。每个偶数都可以被2整除,不管它是否是十进制数(但十进制数如果存在,也必须是偶数)。因此,您可以使用%(模)运算符,将左侧的数字除以右侧的数字,然后返回余数 boolean isEven(double num) { return ((num % 2) == 0); } 余数运算符%将在除以一个数字后给出余数 因此,如果n为偶数,则n%2==0为真;如果n为奇

如何确定给定的数字是偶数还是奇数?我想弄明白这个问题已经很久了,但什么都没有得到。

如果除以2的余数是0,那么它就是偶数
%
是获取余数的运算符。

每个偶数都可以被2整除,不管它是否是十进制数(但十进制数如果存在,也必须是偶数)。因此,您可以使用
%
(模)运算符,将左侧的数字除以右侧的数字,然后返回余数

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

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


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

您可以使用模运算符,但这可能很慢。如果是整数,则可以执行以下操作:

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

这是因为低位总是设置在奇数上。

适用于正数或负数

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);
    }
}
int start=-3;
int-end=6;
对于(int val=start;val
另一种不使用if/else条件的简单方法(适用于正数和负数):

int n=8;
List messages=Arrays.asList(“偶数”、“奇数”);
System.out.println(messages.get(Math.abs(n%2));
对于奇数,表达式将返回“1”作为余数,给出

messages.get(1)=“奇数”,因此打印“奇数”


否则,当表达式出现结果“0”时,将打印“偶数”

您可以使用模运算符,但这可能会很慢。更有效的方法是检查最低位,因为这决定了一个数字是偶数还是奇数。代码如下所示:

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"));        
}
boolean is_odd(int n) {
    return n % 2 == 1 || n % 2 == -1;
}

下面是一个确定给定数字是偶数还是奇数的示例

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

嗯,有很多方法可以确定相同的结果。有关更多示例,请参阅参考资料,找出给定的数字是偶数还是奇数。

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

以下是输出::

  122873215981652362153862153872138721637272
  Even
您可以这样做:

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"));        
}
boolean is_odd(int n) {
    return n % 2 == 1 || n % 2 == -1;
}
这是因为Java在其模运算中有被除数的符号,左边是:n。 所以对于负红利和正红利,模有它们的符号

当然,按位操作更快、更优化,只需用两个或三个短单词记录代码行,这样做是为了可读性。

以下是完整的示例:-

import java.text.ParseException;

public class TestOddEvenExample {
    public static void main(String args[]) throws ParseException {

        int x = 24;
        oddEvenChecker(x);

        int xx = 3;
        oddEvenChecker(xx);
    }

    static void oddEvenChecker(int x) {
        if (x % 2 == 0)
            System.out.println("You entered an even number." + x);
        else
            System.out.println("You entered an odd number." + x);
    }
}
我建议

Java难题:陷阱、陷阱和角落案例书 还有Neal Gafter

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

public static boolean isOdd(int i) {
     return i % 2 == 1;
}
但正如书中提到的:

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

所以通常当我们有负奇数时,我们会得到
i%2
的结果,而不是
1
。因此,我们可以使用@Camilo solution,也可以只执行以下操作:

public static boolean isOdd(int i) {
     return i % 2 != 0;
}
但通常最快的解决方案是使用和运算符,如上面的@lucasmo write:

public static boolean isOdd(int i) {
     return (i & 1) != 0;
}
@编辑 它还值得指出
Math.floorMod(intx,inty)
处理负红利,但如果除数为负,也可以返回
-1
最低有效位(最右边)可用于检查数字是偶数还是奇数。 对于所有奇数,二进制表示中最右边的位始终为1

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

如果给定数的模等于零,则该数为奇偶数。以下是实现此目的的方法:

public void evenOrOddNumber(int number) {
  if (number % 2 == 0) {
    System.out.println("Number is Even");
   } else {
    System.out.println("Number is odd");
  }
 }
/**
*使用模运算符检查数字是否为偶数。
*
*@param number要检查的编号。
*@return{@code true}如果给定的数字是偶数,则返回{@code false}。
*/
公共静态布尔值isEven(整数){
返回编号%2==0;
}
/**
*检查数字是否为偶数或未使用&运算符。
*
*@param number要检查的编号。
*@return{@code true}如果给定的数字是偶数,则返回{@code false}。
*/
公共静态布尔值(整数){
返回(数字和1)==0;
}

%运算符称为模。@Anthony:实际上,它是。数学术语是模,它比求余数更适用
(A%B)
本身可以用作一个表达式,而这正是事情变得有趣的时候。@Stefan:我不会详细说明这一点,但数学家倾向于在模和余数中指出这一点。@StefanKendall检查这一点。谷歌并不是一个规范性的参考。人们更喜欢模数而不是简单地检查数字的第一位,这仍然让我感到惊讶。显然,如果设置了第一位,那么数字必须是奇数。它通常更快,而且在我看来读起来也一样好。我认为其他人不喜欢它而不喜欢模数的原因在于对二进制的理解不足。@dtech我认为你误解了过早优化的含义。如果您事先知道一种方法比另一种方法性能更好,那么使用性能更好的方法并不是过早的优化。它很聪明。也就是说,我的评论更多地是关于在简单地检查偶数/奇数时,如何检查第一位比使用模更符合逻辑。问题是,许多程序员不理解这两种方法的作用,只是按照教程来做。@crush
n%2==0
语义上意味着
除以2,然后检查余数是否为0
,这比
n&1==0
更清楚,这意味着
将所有位归零,但保留最低有效位不变,并检查结果是否为0
。第一种改进的清晰度值得(可能不存在)开销。就是
public void evenOrOddNumber(int number) {
  if (number % 2 == 0) {
    System.out.println("Number is Even");
   } else {
    System.out.println("Number is odd");
  }
 }