我需要解释为什么这段代码打印“1”,我明天参加期末考试,这是一个我无法回答的练习题。任何输入都非常感谢!
public class Test {
public static void main(String[] args) {
int[][] values = {{3, 4, 5, 1}, {33, 6, 1, 2}};
int v = values[0][0];
for (int[] list : values)
for (int element : list)
if (v > element)
v = element;
System.out.print(v);
}
}
答案 0 :(得分:6)
因为下面的代码会给你嵌套数组values
中的最小值,在你的代码中确实是1。
if (v > element)
v = element;
如果v
大于当前element
(即。element
小于v
),请将element
分配给v
}。
答案 1 :(得分:1)
如果元素大于元素v
,则迭代遍历数组中的所有元素并将if (v > element) v = element;
设置为元素。因此,您将得到最小的值,即1。
答案 2 :(得分:1)
您认为此代码应该怎么做?目前,它的打印数量最少。为什么?因为对于每个元素,它执行以下检查:
if (v > element)
v = element;
...其中
v = <the smallest number found so far>
values[0][0]
- 因为, 是此时找到的最小数字,因为我们还没有看过任何元素。v
包含到目前为止看到的最小数字。我强烈建议单步执行调试器中的代码,或者(甚至更好)写下纸上的步骤,在每次迭代时测试循环不变量。
答案 3 :(得分:1)
我们需要逐步检查
首先
你得到了主要的二维数组
int[][] values = {{3, 4, 5, 1}, {33, 6, 1, 2}};
然后分配给var V int。数据为[0] [0]。
Note that values[0] = 3,4,5,1
values[0][0] = 3
int v = values[0][0];
然后2表示数组中的每个值。先入 值[0-1]然后是值[] [0-3]
for (int[] list : values)
for (int element : list)
最后,检查V是否大于您获得的新值。如果它是替代
if (v > element)
v = element;
这段代码让你成为数组中最小的数字。第一个数字。如果你有两个1则需要第一个。
我希望它有所帮助