web-dev-qa-db-ja.com

入力した数値が奇数かどうかを確認する

「どのコードを挿入するか、どこに挿入するかさえわかりませんが、入力した数値が奇数であることを確認したいと思います。

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

モジュラー演算 を使用してください:

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

更新:

このコードはここでテストできます:

number % 2 == 1による均一性のチェックは失敗することに注意してください。

数値が奇数かどうかを確認するには、(number & 1) != 0を使用できます。

52
miku

num%2 == 1は負の奇数で誤った結果を返します。2での除算の余りは1ではありません。これは次のように修正できます。

public boolean isOddNumber(int num) {
    return (num & 1) != 0;
}
10
Chaker

その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」という名前の値を使用しないでください-非常に混乱します。 varには、コード内での役割を読者に知らせたり推測したりできる名前を付けてください。 「a」またはb、c、dなどの意味がわかりません。たとえば、コードを明確にするために、numenteredValueという名前にする必要があります。

6
dantuch

負の整数に関するChakerの回答が確認されました。私のJavaSE-1.8

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


trueの代わりに結果= falseが表示されます

2
jay wsxrfv

Javaのビット演算(ビット操作)方法

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

たとえば、100(数値4)対001を見て、各ビットでAND演算を実行し、0と1のいずれかを返します。終了ビットが4のように0の場合、常に偶数になります。終了ビットが1の場合、奇数になります。

1
John61590