Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在while()之后不继续_Java_While Loop - Fatal编程技术网

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

我刚开始学习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");
    }
  }
}

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);
}