2016-02-27 59 views
-2

所以我對測驗下面的代碼片段:For循環的結果沒有任何意義,我

int a = 120; 
int b = 90; 
int n1 = Math.abs(a); 
int n2 = Math.abs(b); 
int result = 1; 

for (int k = 1; k <= n1 && k <= n2; k++) 
{ 
    if (n1 % k == 0 && n2 % k == 0) 
    { 
     result = k; 
    } 
} 
System.out.println(result); 

輸出是30,我不知道爲什麼。據我所見,循環不會繼續運行,直到計數器打破90(90是n2的絕對值)?那會使得結果= 90.或者只是我不太瞭解的東西?

回答

2

如果您打印出k設置爲result時,您會看到它打印出n1n2的常見因子。

90不會均分n1n2

30相同

+0

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH我覺得啞現在,感謝的人,這是有道理的,所以,從本質上講,它一直走,直到它到達兩個數字,是不是比任何人更大的最高因素。 –

0

請注意,您if語句來檢查,這樣k分兩個n1n2。 90不分120.

0

由於30是120和90的最大公因數(30是120和90均可被整除的最大數),所以30以上的任何數字都會導致if語句評估爲假,所以對於程序的其餘部分,結果將爲30。希望這可以幫助!