Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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 - Fatal编程技术网

Java 用于删除数组中的零的输出不符合预期?

Java 用于删除数组中的零的输出不符合预期?,java,arrays,Java,Arrays,给定一个整数数组,返回一个顺序相同的数组,并删除所有0 样本输入#1 remove({1,2,3,4,5,0,1,2,0,0,2}) {1,2,3,4,5,1,2,2} 样本输出#1 remove({1,2,3,4,5,0,1,2,0,0,2}) {1,2,3,4,5,1,2,2} 样本输入#2 remove({0,0,1,2}) {1,2} 样本输出#2 remove({0,0,1,2}) {1,2} 样本输入#3 remove({0,0,0,0}) {} 样本输出#3 r

给定一个整数数组,返回一个顺序相同的数组,并删除所有0

样本输入#1

remove({1,2,3,4,5,0,1,2,0,0,2})
{1,2,3,4,5,1,2,2}
样本输出#1

remove({1,2,3,4,5,0,1,2,0,0,2})
{1,2,3,4,5,1,2,2}
样本输入#2

remove({0,0,1,2})
{1,2}
样本输出#2

remove({0,0,1,2})
{1,2}
样本输入#3

remove({0,0,0,0})
{}
样本输出#3

remove({0,0,0,0})
{}
MyApproach

我首先计算了有多少个零,然后我创建了一个新数组,只添加了那些不是零的元素

但我没有得到正确的输出

谁能告诉我我做错了什么

以下是我的上述程序代码:

public int[] remove(int[] arr)
{
 int count=0;
 for(int i=0;i<arr.length;i++)
 {
     if(arr[i]==0)
     {
         count++;
     }
 }
 int p[]=new int[arr.length-count];
 for(int m=0;m<p.length;)
 {
     if(arr[m]==0)
     {

         m++;
     }
     else
     {
          p[m]=arr[m];
           m++;
     }
 }
 return p;

 }


Parameters                  Actual Output   Expected Output


'{0,1,2,3,0,1}'               {0,1,2,3}      {1,2,3,1}
public int[]remove(int[]arr)
{
整数计数=0;

对于(int i=0;i您需要两个计数器,一个用于从何处复制,另一个用于复制到何处

for (int n = 0, m = 0; m < p.length; m++)
    if (arr[m] != 0)
       p[n++] = arr[m];
在Java8中,您可以

int n = 0;
for (int x : arr)
    if (x != 0)
        p[n++] = x;
public static int[] removeZero(int[] ints) {
    return IntStream.of(ints)
            .filter(i -> i != 0)
            .toArray();
}

尝试使用此选项删除数组中的零:

public int[] remove(int[] array)
  {
     int j = 0;
     for( int i=0;  i<array.length;  i++ )
   {
    if (array[i] != 0)
        array[j++] = array[i];
   }
     int [] newArray = new int[j];
     System.arraycopy( array, 0, newArray, 0, j );
     return newArray;

 }
public int[]删除(int[]数组)
{
int j=0;
对于(int i=0;i