`我不确定要插入的代码甚至是哪里,但我想检查我输入的数字是否为奇数。
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!");
}
}
}
答案 0 :(得分:52)
if (number % 2 == 0) {
// even
} else {
// odd
}
更新
您可以在此处测试此代码:
请注意,使用number % 2 == 1
检查均匀度将失败。
要检查数字是否为奇数,您可以使用(number & 1) != 0
。
答案 1 :(得分:10)
num%2 == 1在负奇数上返回不正确的结果,2的除数余数不为1。 这可以修复如下:
public boolean isOddNumber(int num) {
return (num & 1) != 0;
}
答案 2 :(得分: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
以澄清您的代码。
答案 3 :(得分:2)
Chaker关于负整数的答案已经确认。
在我的JavaSE-1.8中
System.out.println( "result =" + ( -3 % 2 == 1) );
它显示result = false而不是true
答案 4 :(得分:1)
Java中的按位操作(位操作)方式
if ((num & 1) != 0) //odd
{
//do something here
} else { //even
//do something here
}
通过查看说100(数字4)与001,对每个位执行AND运算并返回0和1来工作。如果结束位为0,如4,则它总是均匀的。如果结束位为1,那将是奇数。