Java 理解列表[i-1]与列表[i]-1
希望这是一个我无法理解的简单答案。完整代码是Java 理解列表[i-1]与列表[i]-1,java,arrays,list,variables,Java,Arrays,List,Variables,希望这是一个我无法理解的简单答案。完整代码是 public static void mystery(int[] list) { for( int i = list.length - 1; i>1; i --) { if (list[i] > list[i - 1]) { list[i -1] = list[i] - 2; list[i]++; } } } }
public static void mystery(int[] list) {
for( int i = list.length - 1; i>1; i --) {
if (list[i] > list[i - 1]) {
list[i -1] = list[i] - 2;
list[i]++;
}
}
}
}
and lets say we are using a list of [2,3,4].
我知道它将输出2,2,5,但我不清楚如何实际完成它。我知道这里的list.length是3,我知道for循环只运行一次,但我不清楚list[I-1]=list[I]-2时会发生什么;地区应该是列表[2-1]=列表[2]-2吗?这两个在括号外的人对它有什么不同的影响
非常感谢 代码非常简单:
if (list[i] > list[i - 1])
上面的一行将列表中的当前元素(老实说,它是一个数组,不是一个列表,但请遵守命名约定)与其前一个元素进行比较。考虑到您的示例输入,它会比较4>3
,如果它大于上一个元素(并且是),它会从上一个元素中减去2,并向当前元素添加1
list[i -1] = list[i] - 2; // list[2-1]=4-2 -> list[1]=2
list[i]++; //list[2]=list[2]+1 -> list[2]= 4+1 = 5
在第一次迭代之后,你可以说最后一个数字是5,最后一个数字是2。下一次迭代检查条件2>2
。它为false,没有任何更改,因此结果数组[2,2,5]
请注意,循环从列表的末尾到开头
list[i-1]
在i之前获取(或设置)元素1<代码>列表[1]-1获取i处的元素并减去1。它读起来差不多。list[i-1]=list[i]-2;这不是平等。它将列表[i]-2转换为列表[i-1]。谢谢大家,凭借你们的提示和耐心,我刚刚突破了众所周知的“障碍”。我现在觉得很傻。