Как определить, является ли данное число четным или нечетным? Я давно хотел понять это и никуда не денусь.
Проверьте, четное или нечетное число
Ответ 1
Вы можете использовать оператор модуля, но это может быть медленным. Если это целое число, вы можете сделать:
if ( (x & 1) == 0 ) { even... } else { odd... }
Это связано с тем, что младший бит всегда будет установлен на нечетное число.
Ответ 2
if((x%2)==0)
// even
else
// odd
Ответ 3
Если остаток, когда вы делите на 2, равно 0, это даже. %
- это оператор для получения остатка.
Ответ 4
Оператор остатка,%, даст вам остаток после деления на число.
Итак, n % 2 == 0
будет истинным, если n четно и false, если n нечетно.
Ответ 5
Каждое четное число делится на два, независимо от того, является ли оно десятичным (но десятичное, если оно присутствует, также должно быть четным). Таким образом, вы можете использовать оператор %
(modulo), который делит число слева на число справа и возвращает остаток...
boolean isEven(double num) { return ((num % 2) == 0); }
Ответ 6
Я бы посоветовал
Джазуа Блох и Нил Гафтер: Книга о головоломках на Java: ловушки, ловушки и угловые случаи
Существует краткое объяснение, как проверить, не является ли число нечетным. Первая попытка похожа на то, что пытался @AseemYadav:
public static boolean isOdd(int i) {
return i % 2 == 1;
}
но как уже упоминалось в книге:
когда операция остаток возвращает ненулевой результат, он имеет тот же знак, что и его левый операнд
так что обычно, когда у нас отрицательное нечетное число, вместо 1
мы получим -1
как результат i%2
. Таким образом, мы можем использовать решение @Camilo или просто сделать:
public static boolean isOdd(int i) {
return i % 2 != 0;
}
но, как правило, самым быстрым решением является использование оператора AND, например, @lucasmo, записанного выше:
public static boolean isOdd(int i) {
return (i & 1) != 0;
}
@Edit Также стоит указать Math.floorMod(int x, int y);
который имеет дело с отрицательным дивидендом, но также может вернуть -1
если делитель отрицательный
Ответ 7
Работает для положительных или отрицательных чисел
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);
}
}
Ответ 8
Эта следующая программа может обрабатывать большие числа (количество цифр больше 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;
if(isEven)
System.out.println("Even");
else
System.out.println("Odd");
}
}
Вот вывод ::
122873215981652362153862153872138721637272
Even
Ответ 9
Наименьший значащий бит (самый правый) может использоваться для проверки, является ли число четным или нечетным. Для всех нечетных чисел самый правый бит всегда равен 1 в двоичном представлении.
public static boolean checkOdd(long number){
return ((number & 0x1) == 1);
}
Ответ 10
Другой простой способ сделать это без использования условия 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"
Ответ 11
Вы можете использовать оператор модуля, но это может быть медленным. Более эффективным способом было бы проверить младший бит, поскольку он определяет, является ли число четным или нечетным. Код будет выглядеть примерно так:
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"));
}
Ответ 12
Если модуль данного числа равен нулю, число является четным или нечетным числом. Ниже приведен метод, который делает это:
public void evenOrOddNumber(int number) {
if (number % 2 == 0) {
System.out.println("Number is Even");
} else {
System.out.println("Number is odd");
}
}
Ответ 13
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);
}
}
Ответ 14
Вот пример, чтобы определить, является ли данное число четным или нечетным,
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");
}
}
}
Ну, есть много способов определить то же самое. Обратитесь к этому ресурсу за дополнительными примерами, чтобы найти данное число четным или нечетным.
Ответ 15
Вы можете сделать так:
boolean is_odd(int n) {
return n % 2 == 1 || n % 2 == -1;
}
Это связано с тем, что Java имеет в своей операции по модулю знак дивиденда с левой стороны: n. Таким образом, для негативных и позитивных дивидендов, по модулю есть их знак.
Конечно, побитовая операция выполняется быстрее и оптимизируется, просто документируйте строку кода с двумя или тремя короткими словами, что делает ее для удобства чтения.
Ответ 16
Вот полный пример:
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);
}
}