13

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

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

5 に答える 5

52

モジュラー演算を使用する:

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

アップデート:

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

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

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

于 2011-03-11T18:40:02.740 に答える
11

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

public boolean isOddNumber(int num) {
    return (num & 1) != 0;
}
于 2015-06-17T22:26:51.213 に答える
6

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

于 2011-03-11T20:20:34.700 に答える
2

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

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


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

于 2015-08-26T08:17:56.070 に答える
1

Java でのビット単位の操作 (ビット操作) 方法

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

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

于 2014-09-17T10:33:30.053 に答える