理解Java中的代码

时间:2017-04-06 05:02:15

标签: java arrays for-loop

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] = ??

2 个答案:

答案 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.依此类推。希望这会有所帮助。