【发布时间】:2017-02-28 21:04:47
【问题描述】:
我知道这个循环会打印出预期的 {5, 1, 2, 3, 4}。 这里的问题是下面的行是如何工作的?
values[i + 1] = values[i];
据我了解,在第一个循环期间,i = 3。所以这将是 values[3+1] = values[3],这意味着在第 4 个索引上将有 3 的元素。这很明显错误,因为这不是代码的工作方式,因为输出不同。
int[] values = new int[]
{1, 2, 3, 4, 5};
int temp = values[values.length - 1];
for (int i = values.length - 2; i >= 0; i--)
{
values[i + 1] = values[i];
}
values[0] = temp;
System.out.println(Arrays.toString(values));
代码将数组的元素向右移动,并将最右边的元素移动到最左边的位置。
请向我解释,因为我很困惑。谢谢。
【问题讨论】:
-
理解这一点的最好方法是在调试器中逐个语句地逐句执行它,同时观察数组中包含的内容。
-
我有,但我还是不明白。
-
这没什么花哨的,如果您想了解更多,只需在每次迭代后循环打印数组内容即可。