【发布时间】:2021-03-21 17:24:51
【问题描述】:
我试图将数组中的所有元素向左移动 1,我试图从数组中删除索引 0 处的元素 3,但我收到的输出与我的预期完全不同。我不明白为什么我会收到这个输出。
我希望收到的输出是 [2,2,3,0] 我希望最后一个索引为零,因为我将所有元素都向左移动了,所以没有值移动到最后一个索引。但我反而收到了 [2,2,3,3]。我不明白为什么 3 在最后一个索引中?
int [] nums = {3,2,2,3};
int length = nums.length;
for (int j = 1; j < length; j++) {
nums [j - 1] = nums [j];
}
return nums.length;
【问题讨论】:
-
你为什么期望最后 3 神奇地变成 0?数组值不会改变,当没有人改变它们时。
-
您需要将
0显式分配给最后一个索引,因为它已经被占用,因此它不再具有默认值。 -
是的,我不小心使用了错误的语法,我想是因为我将所有元素向左移动了 1,所以最后一个索引会为零?
-
您永远不会为 nums[3] 赋值,因为 j-1 只会上升到 2。尝试在调试器中逐步运行它,并特别查看最终迭代。
-
不,因为您实际上并没有在此处 shift 任何内容,而是将值从一个索引复制 到另一个。最终结果看起来就像一个转变。而且由于您复制了这些值,因此最后 3 个值保持不变。
标签: java arrays for-loop indexing integer