2017-03-05 22 views
0

我想提出以下數行的JavaJAVA數軸錯誤

2,3,5,7,11,13,17 (Prime Numbers) 

我試圖this code

for(int i =0; i <= 100; i++) { 
    if(i < 2) { 
     continue; 
    } 
    for(int j = 2; j < 1; j++) { 
     if(i % j == 0) { 
      break; 
     } else { 
      System.out.print(i + ","); 
     }  
    }  
} 

但它不工作 任何人幫助嗎?

+1

在第二個for循環中,您應該將此作爲您的條件:'j Nulano

+0

那麼這個數字如果我把i,5,5,5,7,7,7,7,9,11,11,11,11,11,11,11,11,13,13,13 ,13,13,13,13,13,13,13,13,13,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17 ,19,19,19,19,19,19,19,19,19,19 – JavaLearner

+0

請將所有代碼以您的問題發佈爲代碼格式的文本。 –

回答

1

EDITED 有很多在代碼中的錯誤,首先是第二個循環是一個無限循環和第二個是,System.out.println行不應該在第二循環應該是在第一圈結束!如果您將它放在第二位,它將打印數百次。 這是正確的代碼:

for(int i = 2; i <= 100; i++)//begin loop from 2 instead of 0 
{ 
    boolean flag = true; 
    for(int j = 2; j < i; j++) 
    { 
     if(i % j == 0) 
     { 
      flag = false; 
      break; 
     }  
    } 
    if(flag)System.out.print(i + ","); 
} 

您需要設置一個標誌,檢查是否找到一個因子外循環。

+0

'i'不能等於'j',因爲你正在將'j'循環到'i',而不是直到包括'i'。 – Gooz

+0

這不起作用 - 它會以任何方式打印數字。另外,'i!= j'部分是不必要的,因爲'j Nulano

+0

事實上,@Nulano,'System.out.print(i +「,」);'需要在'break'之前放置。 – Gooz

1

你的代碼是很貧窮,但需要改變的最小量,使其工作產量驗證碼:

outerLoop: 
for(int i = 0; i <= 100; i++) { 
    if(i < 2) { 
     continue; 
    } 
    for(int j = 2; j < i; j++) { 
     if(i % j == 0) { 
      continue outerLoop; 
     }  
    }  
    System.out.print(i + ","); 
} 

但進一步的改進是在2開始第一圈的時候了:

outerLoop: 
for(int i = 2; i <= 100; i++) { 
    for(int j = 2; j < i; j++) { 
     // and so on...