有人可以向我解释答案吗?x最后等于什么?
int[] vs = {4, 15, 6, 26, 7, 8};
int x = vs[0];
for (int v : vs)
{
if (v < x) { x = v; }
}
我会再试一次,因为我发现 sfThomas 的答案有点令人困惑。
所以:预先回答您的问题:x 将等于 4。你的小算法的目的只是在给定的值列表中找到最小的(数字)值。
详细说明:
-
在第 1 行中,您设置了一个整数值(也称为"整数")的数组(将其视为值的有序列表)。此数组称为
vs
。 -
在第 2 行中,将变量
x
分配给vs
中的第一个元素。这恰好是 4。 -
第 3 行声明了一个 for-each 循环(Java 中的官方术语:"Enhanced for Loop")。它为数组的每个元素执行循环体(第 4-6 行
vs
。在每次迭代中,v
将保存当前处理的元素的值。处理顺序等于申报顺序。因此:在第一次迭代中,v
将等于 4,在第二次迭代中等于 15,依此类推。下面给出了一个传统的 for 循环来实现相同的目标。 -
循环的主体(第 5 行)包括检查
v
是否小于x
。这种情况永远不会发生(即数组中没有小于vs
第一个元素的值vs
的值),因此括号x = v;
中的代码(每次找到如此小的元素时都会将x
重新分配给这个较小元素的值)永远不会被执行。换句话说:x
始终保持其初始值vs[0]
即 4。
我希望这对初学者来说足够清楚。
for (int i=0; i<vs.length; i++) {
int v = vs[i];
// rest of the loop body
}
它查找数组中的最小元素 - 最后一部分遍历每个元素,如果找到一个小于前一个值的元素,则将其保存在变量"x"中。
for (int v : vs)
- 这将执行 vs 数组中每个值之后的块,将变量 v
分配给给定值。看看这个。
{ if (v