对于循环结果对我来说没有意义

时间:2016-02-27 22:33:51

标签: java if-statement for-loop

所以我在测验中有以下代码片段:

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.或者只是我不太了解的东西?

3 个答案:

答案 0 :(得分:2)

如果您设置为k时打印出result,则会看到它打印出n1n2的常见因素。

90并不能均匀地划分n1n2

30

答案 1 :(得分:0)

请注意,您的if语句会进行检查,以便kn1 n2分开。 90不分120。

答案 2 :(得分:0)

由于30是120和90的最大公因子(30是120和90均可被整除的最大数),任何大于30的数字都会导致if语句被评估为false,因此结果将为30对于该计划的其余部分。希望这有帮助!