Проверка того, является ли введенный номер нечетным
`Я не уверен, какой код вставить или даже где, но я хотел бы проверить, что номер, который я вводил, является нечетным числом.
import java.io.*;
import javax.swing.JOptionPane;
public class Diamond {
public static void main(String [] args) throws IOException {
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));
String input;
int num;
System.out.println("input number: ");
input = stdin.readLine ();
num = Integer.parseInt(input);
if (num % 2 ==1){
int d = num;
int e = 0;
for (int a = 0; a <= num; a++) {
for (int c = d; c>= 1; c-- )
System.out.print(" ");
d-=1;
for (int b = 1; b <= a; b++)
System.out.print ("* ");
System.out.println();
}
num-=1;
for (int a = 0; a<=num; a++) {
for (int b = num; b > a; b--)
System.out.print (" *");
System.out.println();
for (int c = 0; c <= e; c++)
System.out.print(" ");
e+=1;
}
} else {
System.out.println("Please enter an odd number!");
}
}
}
Ответы
Ответ 1
Используйте модульную арифметику:
if (number % 2 == 0) {
// even
} else {
// odd
}
Update:
Здесь вы можете проверить этот код:
Опасайтесь, что проверка равномерности с помощью number % 2 == 1
завершится с ошибкой.
Чтобы проверить, является ли число нечетным, вы можете использовать (number & 1) != 0
.
Ответ 2
num% 2 == 1 вернуть неверные результаты на отрицательном Нечетное число, остальная часть деления с 2 не будет 1.
Это можно зафиксировать следующим образом:
public boolean isOddNumber(int num) {
return (num & 1) != 0;
}
Ответ 3
У вас нет readLine
внутри этого if
. Сначала вам нужно получить значение, а затем вы можете использовать if
.
Это происходит следующим образом:
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));
String input;
int num;
System.out.println("input number: ");
input = stdin.readLine();
num = Integer.parseInt(input);
if (num % 2 == 1) {
// odd
} else {
System.out.println("Please enter an odd number!");
}
Наконец - НЕ использовать значения с именем "a", "e" или "d" - это очень запутанно. Просто назовите вары с именами, которые позволяют читателю узнать/угадать их роль в вашем коде. Я понятия не имею, что означает ваш "a" или b, c, d и т.д. Например, ваш num
должен быть назван enteredValue
, чтобы прояснить ваш код.
Ответ 4
Подтверждается ответ Chaker о отрицательном целых числах.
В моем JavaSE-1.8
System.out.println( "result =" + ( -3 % 2 == 1) );
он показывает результат = false вместо true
Ответ 5
Побитовая операция (бит-манипуляция) в Java
if ((num & 1) != 0) //odd
{
//do something here
} else { //even
//do something here
}
работает, смотря, скажем, 100 (номер 4) vs 001, выполняя операцию И на каждом бите и возвращая либо 0, либо 1. Если конечный бит равен 0, как 4, он всегда будет четным. Если конечный бит равен 1, он будет нечетным.