Java在while()之后不继续
我刚开始学习Java,想写一段代码,告诉我某个东西是否是素数。但在我插入数字后,它会卡在while函数上。我做错了什么Java在while()之后不继续,java,while-loop,Java,While Loop,我刚开始学习Java,想写一段代码,告诉我某个东西是否是素数。但在我插入数字后,它会卡在while函数上。我做错了什么 import javax.swing.JOptionPane; public class Primenumber { public static void main(String[] args) { double number1, rest, x; boolean prime; number1 = Double.parseDouble(JOpt
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");
}
}
}
while(rest!=0 | | x小心浮点数错误!要么那样,要么你在无限循环中运行。你到底为什么要用double
来判断某个东西是否是质数?如果你检查这个数字是否是质数,也不需要浮点数。x=x++
看起来很奇怪,会导致未定义的错误行为,如果这是C代码。你的意思是x++
还是x=x+1;
?我不太擅长Java,但对布尔值使用
似乎是有效的。
与|
在这里真的没关系,两个操作数都没有副作用。
在技术上也是或,只是它确实起作用k如果第一个条件为真,则第二个条件也是正确的。注意:将double number1
更改为int number1
是好的,因为对该代码的更改还会将rest
和x
的类型更改为int
@Andy Turner…第二个操作数没有副作用非常重要。第一个操作数在这两种情况下都将对兰德进行评估;)
while (rest != 0 || x <= (0.5 * number1)) {
x++;
rest = (number1 % x);
}