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”的值——这非常令人困惑。只需使用让读者知道/猜测它们在您的代码中的角色的名称来命名变量。我不知道你的“a”或b、c、d等是什么意思。例如,num应该命名你的名字enteredValue以澄清你的代码。

于 2011-03-11T20:20:34.700 回答
2

查克关于负整数的回答得到了证实。在我的 JavaSE-1.8

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


它显示结果 =false 而不是 true

于 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。如果结束位是 0,比如 4,它总是会是偶数。如果结束位为 1,它将是奇数。

于 2014-09-17T10:33:30.053 回答