2014-11-06 5 views
0

사용자가 입력 한 특정 숫자까지 소수를 생성하는 프로그램을 작성 중입니다. 프로그램을 실행할 때 번호를 입력 할 때 프로그램에서 아무 것도 출력하지 않고 계속 실행 중이며 그 이유를 알 수 없습니다. int 대신 double을 사용하려고 시도했지만 ++ 대신 ++를 사용하여 시도했는데 문제가 해결되지 않았습니다. 누군가 제발 도와주세요 !! 이것은 내가 작성한 코드입니다.콘솔 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++; 
      } 
     } 
    } 
} 

내가 뭘 잘못하고 있는지 말해 주셔서 감사합니다. 첫 번째 루프는 1이기 때문에 결코,이 루프에 간다

+0

또한 경우가 if (secondloop == 1);'과 아무 관계가없는 명령문을 사용하면 세미콜론을 제거한 경우 다음 블록이 항상 실행되는 대신 조건부로 실행됩니다. – NESPowerGlove

+0

@mdl 그게 내 도움 덕분에 감사합니다 :) – Garrett

답변

0

당신이, 당신이 당신의 루프를 테스트 할 수 있습니다 작은 값, 연필 차 종이에 그것을 시도, 당신의 코드를 디버깅 싶어하는 경우는 모든 테스트 for(int i=2; i<=firstloop; ++i)에 있기 때문에 실행되지 않습니다 그것은 소수 또는 소수를 구하기 위해서 실제로 우리는 소수의 정의로 시작해야한다 : 소수는 소수가 아니라 소수 일 경우 1을 곱해서 1, 소수라면 소수가 1 < 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

+0

; 이후에 테스트를 입력하지 않도록하면 출력이 없습니다! – indian

+0

옆에 if가 의미가 없습니다. secondloop = 1; if (secondloop == 1); { System.out.println (firstloop); } – indian

0

, 난 2 이다 그래서 나는 결코 < = firstloop 없습니다 :

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

따라서 증가 결코 극복 firstloop 그것은 영원히 반복됩니다.

+0

사실 firstloop ++는 들어 본 적이 없어요. 가난한 들여 쓰기로 인해 읽기가 어렵습니다. 따라서 첫 번째 루프는 증가하지 않으며 최대 값은 무의미합니다. – cowls

+0

네, 들여다가 나를 속였습니다! – Narmer

+1

O.P – cowls

0

코드를 올바르게 들여 쓰면 firstloop안에 for 루프가 증가합니다. 반면에 대한 루프는 i가 항상보다 큰 firstloop

+0

에 대한이 이야기에 대한 도덕적 인 생각은 프로그래밍 수업을 온라인으로받는 제 코드를 올바르게 들여 쓴 것이 무엇을 의미하며 적절한 들여 쓰기에 대해서는 아무 말도하지 않았습니다. "올바른 들여 쓰기"를 얻는 방법 – Garrett

+0

정확한 들여 쓰기는 (와)가 코드를 더 빨리 이해하고 실제로 실수 한 것을 발견하는 데 도움이됩니다. 우선 닫는 브래킷은 해당 브래킷과 같은 높이에 있어야하며 그 사이의 각 내용은 더 들여 쓰기해야합니다 (예 : 4 칸 더) http://mbreen.com/javastyle.html –