所以我在测验中有以下代码片段:
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.或者只是我不太了解的东西?
答案 0 :(得分:2)
如果您设置为k
时打印出result
,则会看到它打印出n1
和n2
的常见因素。
90并不能均匀地划分n1
和n2
。
30
答案 1 :(得分:0)
请注意,您的if
语句会进行检查,以便k
将n1
和 n2
分开。 90不分120。
答案 2 :(得分:0)
由于30是120和90的最大公因子(30是120和90均可被整除的最大数),任何大于30的数字都会导致if语句被评估为false,因此结果将为30对于该计划的其余部分。希望这有帮助!