我刚刚开始使用Java,并希望编写一个代码,告诉我某些东西是否为黄金数字。但是在插入数字后,它会卡在while函数上。我做错了什么?
import javax.swing.JOptionPane;
public class Primenumber {
public static void main(String[] args) {
double number1, rest, x;
boolean prime;
number1 = Double.parseDouble(JOptionPane.showInputDialog("Insert a number: "));
x = 2;
rest = (number1 % x);
while (rest != 0 | x == (0.5 * number1)) {
x = x++;
rest = (number1 % x);
}
if (rest == 0) {
prime = false;
} else {
prime = true;
}
if (prime == true) {
JOptionPane.showMessageDialog(null, number1 + " is a prime number ");
} else {
JOptionPane.showMessageDialog(null, number1 + " is not a prime number");
}
}
}
答案 0 :(得分:1)
while (rest != 0 || x <= (0.5 * number1)) {
x++;
rest = (number1 % x);
}
两次更改|
不是您想要的。 ||
是您正在寻找的(又名OR)。
你也不想要x == (0.5 * number1)
。这是你永恒的循环的真正原因。
最后将您的double number1
更改为int number1
,作为更有意义的对象。
哦,就像你提到的评论x++;
一样。
修改:人们评论是正确的|
而||
都是正确的。然而,正如这个答案解释Difference between | and || in Java,这是一个问题,你是否想要短暂的OR。