java - 将项目向右移动,然后将元素添加到数组
问题描述
我正在努力解决这个问题。我正在做一个项目,它需要我将数组中的所有元素向右移动,然后在索引 0 处添加新元素。我很清楚 ArrayLists 会使这更容易,但我想坚持使用普通数组这个
应该是什么样子
原始 {2, 3, 4, null}
新 {1, 2, 3, 4)
这是我拥有的当前代码。
while (scnr.hasNext()) {
for (int i = 0; i < count; i++) {
if (scnr.hasNext()) {
data[i + 1] = data[i];
}
}
data[0] = scnr.next();
count++;
}
scnr.close();
我的问题是我可以添加前两个元素,但是第二个元素之后的元素都是一样的。即 {2, 3, 3, 3} 而不是 {1, 2, 3, 4}
注意:我使用 count 的原因是因为有许多我不想添加的空值并且我不希望它们增加运行时复杂性。
解决方案
正如 karakfa 评论的那样,看起来您在数组中移动的方式是从左到右,这意味着您移动的第一个元素是成功的,但之后的所有元素都是相同的。
像这样想:
index : 0 | 1| 2|...
element: 2 | 3| 4|...
如果从索引 0 开始,然后覆盖索引 1,则新数组为:
index : 0 | 1| 2|...
element: 2 | 2| 4|...
如果您随后尝试将前一个值 (3) 复制到下一个索引,当它查找该 3 时,它会找到一个 2,因为您已经覆盖了 3!
走相反的路会更好。基本上你想反转你访问数组的方向。
推荐阅读
- python - ValueError:只能比较熊猫中标记相同的系列对象?
- java - JSoup java登录网页并查询
- r - 在 R 中,如何将字符转换为逐字表达?
- php - PHP 支持向下转换吗?
- python - 烧瓶 + 硒 + Ubuntu + 阿帕奇
- linux - GDB:使用 x 命令读取不起作用
- python - 如何将熊猫fillna NaN与下一行值的负值一起使用
- bash - 在终端上编写相同的Shell脚本时不起作用
- python - Python 用变量断言字符串
- wordpress - Apache 反向代理背后的 WordPress 站点不断重定向到 localhost