2014-11-06 129 views
0

我正在創建一個程序,在該程序中它生成的素數達到用戶輸入的特定數字。當我在運行程序時輸入數字時,程序不輸出任何內容,並且仍在運行,我無法弄清楚原因。我試過使用double而不是int,而且我試過使用i ++而不是++,我沒有解決這個問題。有人請幫助!這是我寫的代碼:控制檯Java中沒有輸出

package assignment_4_1; 
import java.util.Scanner; 
public class Assignment_4_1 { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    Scanner input = new Scanner (System.in); 
    System.out.println("Enter a number above 50 to find all of the primes between 1 and that number: "); 
    int upto = input.nextInt(); 
    int firstloop = 1; 
     while(firstloop < upto) 
     { 
      for(int i=2; i<=firstloop; ++i) 
      { 
       double secondloop; 
       if(firstloop % i == 0) 
       { 
        secondloop = 0; 
       } 
       secondloop = 1; 
       if(secondloop == 1); 
       { 
        System.out.println(firstloop); 
       } 
       firstloop++; 
      } 
     } 
    } 
} 

感謝誰能告訴我我做錯了什麼。

+0

也如果有一個語句對'if(secondloop == 1)'不起作用,',如果刪除了分號,下一個塊將有條件地執行,而不是總是執行。 – NESPowerGlove 2014-11-06 14:17:29

+0

@mdl這是我的問題,謝謝你的幫助:) – Garrett 2014-11-06 14:22:50

回答

0

如果你想調試代碼,嘗試使用較小的值,鉛筆玖龍紙業,您可以測試循環測試所有的爲了得到素數值或數字,我們實際上應該從素數的定義開始:數字不分配,但是由1和它自己,如果數字不是素數,那麼他們的n爲1 < n < n和數/ N =實===號%n = 0時,更精確地是1 < N /數< 2這樣:

Scanner input = new Scanner (System.in); 
int number= input.nextInt(); 
boolean prime; 
for (int i=1;i<=number;i++) 
{ 
prime=true; 
for(int j=2;j<=i/2;j++) 
{ 
if(i%j==0) 
{ 
prime=false; 
break; 
} 
} 
if(prime) 
{ 
System.out.println(i+","); 
} 
} 
+0

我正在使用%就像在說它剩下的沒有餘數不是它的素數 – Garrett 2014-11-06 14:30:15

+0

那樣;之後如果會阻止進入測試,所以沒有輸出! – indian 2014-11-06 14:33:47

+0

旁邊,如果沒有意義secondloop = 1; if(secondloop == 1); { System.out.println(firstloop); } – indian 2014-11-06 14:34:12

0

它永遠不會在這個循環中,因爲第一圈是1,我是2 ,所以我從來都不是< = firstloop:

for(int i=2; i<=firstloop; ++i) { 

所以firstloop從來沒有得到增加,它永遠循環。

+0

事實上,firstloop ++是在裏面(它永遠不會進入)由於縮進差,它很難閱讀。所以第一個循環永遠不會增加,upto的值是不相關的 – cowls 2014-11-06 14:19:56

+0

是的,縮進欺騙了我! – Narmer 2014-11-06 14:20:11

+1

我認爲theres道德對這個故事的O.P – cowls 2014-11-06 14:20:44

0

如果你會正確縮進你的代碼,你可能會看到,你增加firstloop裏面 for循環!在另一方面for循環將不會執行,因爲在for(int i=2; i<=firstloop; ++i)i總是大於firstloop

+0

你是什麼意思,正確地縮進我的代碼即時通訊編程類在線,它從來沒有說過任何關於正確的縮進。如何實現「正確縮進」 – Garrett 2014-11-06 14:26:59

+0

正確的縮進可幫助您(和我們)更快地理解您的代碼並找出您實際犯的錯誤。對於初學者來說:每個右括號應該與相應的開大括號的高度相同,並且它們之間的每個內容應該更加縮進(例如,多於4個空格)http://mbreen.com/javastyle.html – 2014-11-06 14:36:14