2016-04-14 18 views
-1

'dan sonra devam etmiyor. Java ile yeni başladım ve bir şey öntanımlı olup olmadığını söyleyen bir kod yazmak istedim. Ama numarayı ekledikten sonra süre fonksiyonu üzerinde sıkışır. Neyi yanlış yaptım?Java,()

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"); 
    } 
    } 
} 
+3

Kayan nokta hataları için dikkatli olun! – MikeCAT

+0

ya da sonsuz döngüde çalışıyorsunuz – Stultuske

+3

Neden bir şey asal sayı olup olmadığını yargılamak için 'double' kullanıyorsunuz? – MikeCAT

cevap

1
while (rest != 0 || x <= (0.5 * number1)) { 
    x++; 
    rest = (number1 % x); 
} 

İki değişiklikler | istediğini değil. ||, aradığınız şeydir (aka OR).

Ayrıca x == (0.5 * number1)'u istemezsiniz. Bu sonsuz süre döngüsünün gerçek sebebidir.

Son olarak,'nu int number1 olarak değiştirin, bir nesne olarak daha anlamlı olur.

Oh ve benzeri yorumların da belirtildiği gibi x++; istediğiniz gibi.

Düzenleme: İnsanlar yorum yapılıyor | ve || öğelerinin ikisi de OR'dir. Ancak bu cevabın Difference between | and || in Java açıklamasından ötürü, eğer VEYA'ya kısa devre yaptırmak istiyorsanız sorun olur.

+0

Java'da pek iyi değilim ama' '' 'boolean' için geçerli görünüyor. http://melpon.org/wandbox/permlink/d2GBlbdI4lrlGTw0 – MikeCAT

+1

'|' vs '||' burada gerçekten önemli değil, ne işlenenin bir yan etkisi vardır. –

+0

'|' teknik olarak ayrıca bir "OR" dür, sadece ilk koşulu doğruysa ikinci koşulu denetler. – SomeJavaGuy