2013-12-13 6 views
-6

방금 ​​LCM 클래스에 대한 질문을 올렸고 코드를 변경했지만 여전히 작동하지 않습니다. 삽입 (10,4) 그래서 프로그램이 20을 인쇄해야하지만 단지 0을 인쇄합니다. 초기화에 뭔가 문제가있을 수 있습니까? "int multiple"을 여러 다른 값으로 변경하고 메서드는 "multiple"로 초기화 된 값을 출력합니다. 여기 내 고정 코드가 있습니다. 고맙습니다.For 루프가 작동하지 않습니다.

public class LCM { 
public static int calcLCM(int num1, int num2){ //num1=10, num2=4; their LCM is 20 
    //num1 has to be greator than num2 
    int multiple=0; 
    for(int i=1;i<=num1;i++) 
    { 
     if(num2==num1) 
     { 
      multiple=num2; 
     } 

     else if(num2*i>num1) 
     { 
      i++; 
      num1=num1*i; 
     } 

     else if(num2*i<num1){ 
      i++; 
      num2=num2*i; 
     } 
    } 
    return multiple; 
    } 
} 
+5

귀하의 [이전 질문]를 줄 것이다 (http://stackoverflow.com/questions/20559367/i-am-so-confused-about-for -loops-in-java) 그리고 이것은 프로그래밍 참조를 먼저 찾아야한다고 제안합니다. 코드 작성을 시작하기 전에 독서 시간을 보내십시오. – devnull

+0

그러면 루프가 작동하지 않습니다. 'num2 * i Makoto

+0

귀하의 알고리즘에 문제가 있다고 생각합니다. 코드에서 사용하려는 알고리즘이 무엇인지 명확하게 알 수 없습니다. – jeffrey

답변

0

루프 내에서뿐만 아니라 루프 내부에서 i이 증가합니다. 그렇게하지 않으면 루프가 값을 건너 뛸 수 있습니다.

또한 num1num2i을 곱합니다. 당신이 정말로하고 싶은 것은 원래의 가치로 증분하고 싶다는 것입니다.

0

알고리즘에 약간의 변화를 잘 작성 답변 -

public class LCM 
{ 
    public static int calcLCM(int num1, int num2) 
    { 
     //num1=10, num2=4; their LCM is 20 
     //num1 has to be greator than num2 
     int i=1; 
     while((num1*i)%num2!=0) 
     { 
     i++; 
     } 
     return num1*i; 
    }  

     public static void main(String[] args) 
    { 
    System.out.println(calcLCM(10,2)); 
    } 
} 
관련 문제