Проверка, является ли введенное число нечетным - PullRequest
13 голосов
/ 11 марта 2011

`Я не уверен, какой код вставлять или где, но я хотел бы проверить, что введенное число является нечетным.

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

Ответы [ 5 ]

52 голосов
/ 11 марта 2011

Использование модульная арифметика :

if (number % 2 == 0) {
  // even
} else {
  // odd
}

Обновление:

Вы можете проверить этот код здесь:

Помните, что проверка на равномерность с помощью number % 2 == 1 не удастся.

Чтобы проверить, не является ли число нечетным, вы можете использовать (number & 1) != 0.

10 голосов
/ 18 июня 2015

num% 2 == 1 возвращает неправильные результаты для отрицательного нечетного числа, остаток от деления с 2 не будет 1. Это можно исправить следующим образом:

public boolean isOddNumber(int num) {
    return (num & 1) != 0;
}
6 голосов
/ 11 марта 2011

Вы не можете иметь 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 для уточнения вашего кода.

2 голосов
/ 26 августа 2015

Ответ Чакера о отрицательном целом числе подтвержден. В моем JavaSE-1.8

System.out.println( "result =" + ( -3 % 2 == 1) );


он показывает результат = ложь вместо истины

1 голос
/ 17 сентября 2014

Путь побитовой операции (битовая манипуляция) в Java

if ((num & 1) != 0) //odd
{
     //do something here
} else { //even
    //do something here
}

работает, глядя, скажем, 100 (число 4) против 001, выполняя операцию И над каждым битом и возвращая либо 0, либо 1. Есликонечный бит равен 0, как 4, он всегда будет четным.Если конечный бит равен 1, он будет нечетным.

...