在while()之后Java不会继续

时间:2016-04-14 13:48:59

标签: 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(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");
    }
  }
}

1 个答案:

答案 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。