Java 如果有零,向左移动
我正在尝试创建一个程序,它将接受一个整数数组,比如说{2,0,32,0,0,8},它可以是任意长度的,并使所有非零数都位于较低索引的左侧,所有的零都移动到末尾。 例如,{2,0,32,0,0,8}变成了{2,32,8,0,0,0}。 此数组可以是任意长度,并包含任意非负整数。 这就是我到目前为止所做的:Java 如果有零,向左移动,java,arrays,sorting,Java,Arrays,Sorting,我正在尝试创建一个程序,它将接受一个整数数组,比如说{2,0,32,0,0,8},它可以是任意长度的,并使所有非零数都位于较低索引的左侧,所有的零都移动到末尾。 例如,{2,0,32,0,0,8}变成了{2,32,8,0,0,0}。 此数组可以是任意长度,并包含任意非负整数。 这就是我到目前为止所做的: public static int[] moveLeft(final int[] a) { for (int i = 0; i < a.length; i++) { i
public static int[] moveLeft(final int[] a) {
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
for (int j = 0; j < a.length; j++) {
if (a[j] == 0) {
a[j] = a[i];
a[i] = 0;
}
}
}
}
return a;
公共静态int[]moveLeft(最终int[]a){
for(int i=0;i
}
但是,当我这样做时,它对第一个和第二个角色不起作用。如果我有{1,2,0,1},它将在返回{1,2,1,0}时返回{2,1,1,0}。有什么帮助吗?您的内部循环应该在索引
i
之前停止。改变这个
for (int j = 0; j < a.length; j++) {
for(int j=0;j
到
for(int j=0;j
然后你的代码对我有效。我们可以创建一个临时数组,并在原始数组中添加一个元素,只有当它非零时才可以。对于零,我们可以获取一个整数变量n_zero,并将其初始化为0。只要有0个元素,就将其递增(而不是将其添加到临时数组中)现在,我们可以在temp_数组的后面添加零,n_零次。这个temp_数组就是你想要的。
for (int j = 0; j < i; j++) {