2013-12-13 86 views
-6

我剛剛發佈了一個關於我的LCM類的問題,我更改了我的代碼,但它仍然無效。 我插入(10,4),所以程序應該打印出20,但它只是打印0.也許初始化有什麼問題嗎?我將「int multiple」更改爲幾個不同的值,並將方法打印出已初始化爲「multiple」的值。 這是我的固定代碼。謝謝。For Loop不起作用

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)); 
    } 
}