如何删除数字零

时间:2016-02-02 11:32:10

标签: java

我有两个存储元件用于正元件,一个用于负元件,并提取必要的逻辑,用于执行相应的元件并将它们放置在适当的线程中。

但是我得到了代码中的零个数。

int[] array= {12, 23, -22, 0, 43,545, -4, -55, 43, 12, 0, -999, -87};


   int[] negativni= new int[array.length];
   int[] pozitivni= new int[array.length];

    for (int x = 0, y=0; x <array.length; x++, y++) 
    {
       if (array[x]<0) {
              negativni[x]=array[x];
            }
        if (array[y]>-0) {
            pozitivni[y]=array[y];
         }
    }
       System.out.println(Arrays.toString(pozitivni));
       System.out.println(Arrays.toString(negativni));

输出:

[12, 23, 0, 0, 43, 545, 0, 0, 43, 12, 0, 0, 0]
[0, 0, -22, 0, 0, 0, -4, -55, 0, 0, 0, -999, -87]

如何改进我的代码?

4 个答案:

答案 0 :(得分:4)

你有一些零,因为你初始化了13个元素的数组。因此,Java使用默认值int初始化元素,并且它是0

如果你想要一个动态大小和有序的数组,你必须使用List<Integer>

答案 1 :(得分:1)

除非分别添加负数或正数,否则不应增加x和y。将外部周期更改为i(单独的变量),并仅在if条件中增加yx

答案 2 :(得分:0)

你应该为每个子数组保留一个单独的计数器,并且只有在数组中插入一个值时才增加它。

int[] negativni= new int[array.length];
int[] pozitivni= new int[array.length];
int negativniLength = 0;
int pozitivniLength = 0;

for (int i = 0; i <array.length; i++) 
{
    if (array[i]<0) {
        negativni[negativniLength++]=array[i];
    }
    if (array[i]>-0) {
        pozitivni[pozitivniLength++]=array[i];
    }
}

然后,您可以使用Arrays.copyOf缩小数组。

pozitivni = Arrays.copyOf(pozitivni,pozitivniLength);
negativni = Arrays.copyOf(negativni,negativniLength);

然后打印出来:

System.out.println(Arrays.toString(pozitivni));
System.out.println(Arrays.toString(negativni));

答案 3 :(得分:0)

尝试这样的事情:

      int[] array= {12, 23, -22, 0, 43,545, -4, -55, 43, 12, 0, -999, -87};


       int[] negativni= new int[array.length];
       int[] pozitivni= new int[array.length];

       int x;
        for ( x = 0; x <array.length; x++) 
        {
           if (array[x]<0) {
                  negativni[x]=array[x];
                }
            else if (array[x]>0) {
                pozitivni[x]=array[x];
             }
        }

添加for循环以从negativni数组中删除零:

       int k=0;
        for( int i=0;  i<negativni.length;  i++ )
        {
            if (negativni[i] != 0)
                negativni[k++] = negativni[i];
        }

添加for循环以从pozitivni数组中删除零:

      int m=0;
      for( int i=0;  i<pozitivni.length;  i++ )
        {
          if (pozitivni[i] != 0)
              pozitivni[m++] = pozitivni[i];
        }

使用新尺寸的<{1}}和negative元素添加两个新数组

positive

这里只复制新数组中的零元素

         int [] newArrayNegative = new int[m];
         int [] newArrayPositive = new int[k];

打印新数组值

        System.arraycopy( pozitivni, 0, newArrayNegative, 0, m );
        System.arraycopy( negativni, 0, newArrayPositive, 0, k );

输出:

           System.out.println(Arrays.toString(newArrayNegative));
           System.out.println(Arrays.toString(newArrayPositive));