我有两个存储元件用于正元件,一个用于负元件,并提取必要的逻辑,用于执行相应的元件并将它们放置在适当的线程中。
但是我得到了代码中的零个数。
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]
如何改进我的代码?
答案 0 :(得分:4)
你有一些零,因为你初始化了13个元素的数组。因此,Java使用默认值int初始化元素,并且它是0
。
如果你想要一个动态大小和有序的数组,你必须使用List<Integer>
。
答案 1 :(得分:1)
除非分别添加负数或正数,否则不应增加x和y。将外部周期更改为i
(单独的变量),并仅在if条件中增加y
和x
。
答案 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));