有人能给我解释一下答案吗? 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 中的官方术语:“增强型 for 循环”)。它对数组
vs
的每个元素执行循环体(第 4-6 行)。在每次迭代中,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
}
关于Java学习数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910247/