Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果有零,向左移动_Java_Arrays_Sorting - Fatal编程技术网

Java 如果有零,向左移动

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

我正在尝试创建一个程序,它将接受一个整数数组,比如说{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++) {
       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++) {