public static void mystery2d(int[][] a) {
for (int r = 0; r < a.length; r++) {
for (int c = 0; c < a[0].length - 1; c++) {
if (a[r][c + 1] > a[r][c]) {
a[r][c] = a[r][c + 1];
}
}
}
}
如果初始化一个名为numbers的二维数组来存储以下整数,那么在显示调用后它的内容是什么?
int[][] numbers = {
{3, 4, 5, 6},
{4, 5, 6, 7},
{5, 6, 7, 8}
};
mystery2d(numbers);
我真的想用2D列表来理解代码,但是在使用for循环时遇到了困难。如果有人可以引导我完成这些步骤或向我解释它是如何工作的,那将非常非常感谢!
例如,下面代码的值是什么,所以我可以看看是否可以更好地看到循环的迭代?
numbers[0][0] = ??
numbers[1][1] = ??
numbers[2][3] = ??
答案 0 :(得分:2)
代码是删除每行中的最小元素。 这是它的工作原理。
在第一行,它将检查3 <4?是真的。因此,a [0] = 3被替换为[0] = 4但是[1] = 4保持相同。发生相同的过程直到它到达每一行的末尾。因此,每个'c'次迭代结束时最后一个位置的数字保持不变。
因此,输出将是:
4566
5677
6788
所以,每行中最小的元素。即分别从第1行,第2行和第3行中的3,4,5从阵列中移除。我希望你有所收获!
答案 1 :(得分:0)
首先,你应该在你的for循环而不是r和c中使用i和j,这是一个好习惯。您的循环将一个数字与下一个数字进行比较,如果新数字大于原始数字,则将原始数字更改为新数字。那么数字[0] [0]会被比较3吗? 4 = 3&lt; 4 =所以3现在变为4.数字[1] [1]将是5? 6 = 5&lt; 6 = 5现在变为6.依此类推。希望这会有所帮助。