Java 为什么ArraysUtils.addElement不能正常工作?

Java 为什么ArraysUtils.addElement不能正常工作?,java,arrays,apache-commons,Java,Arrays,Apache Commons,我有一段代码,要求输入数字,然后将它们引入数组,然后,我必须分离正、负和空 我在创建每种类型的数组时遇到问题 例如,我开始编写代码,引入5个数字(1,2,3,4,5),然后转到将正数分配给positiveArray、将负数分配给negativeArray和将null分配给nulledArray的方法 但当我打印时,例如,positiveArray,只在最终索引处添加 我读到,每次调用ArrayUtils.add(),它都应该将数字放在末尾,但不像我得到的那样,应该是这样的: int[] num

我有一段代码,要求输入数字,然后将它们引入数组,然后,我必须分离正、负和空

我在创建每种类型的数组时遇到问题

例如,我开始编写代码,引入5个数字(1,2,3,4,5),然后转到将正数分配给positiveArray、将负数分配给negativeArray和将null分配给nulledArray的方法

但当我打印时,例如,positiveArray,只在最终索引处添加

我读到,每次调用ArrayUtils.add(),它都应该将数字放在末尾,但不像我得到的那样,应该是这样的:

int[] numbers= new int[4];
numbers = ArrayUtils.add(numbers , 1);
numbers = ArrayUtils.add(numbers , 2);
numbers = ArrayUtils.add(numbers , 3);
numbers = ArrayUtils.add(numbers , 4);
数字={1,2,3,4}

还是我错了

我用的是ApacheComons

谢谢


导入java.util.array;
导入javax.swing.JOptionPane;
导入org.apache.commons.lang3.ArrayUtils;
公共类das{
私有int cantidadElementos=0;
private int pos=0,neg=0,nulos=0;//números正片和负片
private int[]numeros=new int[10];//数组que contendrálos números leídos por teclado
私人整数[]数字负数;
私有int[]数字正态;
私人整数[]个数;
公共静态void main(字符串[]args){
das=新的das();
das.agregarementos();
das.cantidadPositivos();
}
公共无效Agregarementos(){
int i=0;
对于(i=0;i<10;i++){
试一试{
numeros[i]=(Integer.parseInt(JOptionPane.showInputDialog(null,“引入非valor”,“Agregando元素[“+cantidadElementos+”]”,JOptionPane.QUESTION_消息));
如果(数值[i]>0)
{
pos++;
}
else if(数值[i]<0)
{
neg++;
}
其他的
{
nulos++;
}
cantidadElementos++;
}捕获(例外e){
showMessageDialog(null,“Has agregado”+cantidadElementos+“elementos.”,“Información que cura”,JOptionPane.INFORMATION_MESSAGE);
回来
}
}
}
公共无效cantidadPositivos(){
int i=0;
对于(i=0;i=1)
{
numerosPositivos=新整数[pos];
numerosPositivos=ArrayUtils.add(numerosPositivos,numeros[i]);
System.out.println(Arrays.toString(numeriospositivos));
}

否则,如果(numeros[i]问题是您在每次迭代时都要重新创建一个新数组,如此行(在
cantidadPositivos()
中):

您应该在输入for循环之前定义这些数组

public void cantidadPositivos(){
    int i = 0;
    numerosPositivos = new int[pos];
    numerosNegativos = new int[neg];
    numerosNulos = new int[nulos];
    for(i = 0; i < cantidadElementos; i++)
    {
        if(numeros[i] >= 1)
        {
            numerosPositivos = ArrayUtils.add(numerosPositivos, numeros[i]);
            System.out.println(Arrays.toString(numerosPositivos));   
        }
        else if (numeros[i] <=-1)
        {
            numerosNegativos = ArrayUtils.add(numerosNegativos, numeros[i]);
        }
        else
        {
            numerosNulos = ArrayUtils.add(numerosNulos, numeros[i]);
        }

    }
    JOptionPane.showMessageDialog(null, "De los [ "+cantidadElementos +" ] elementos en el vector:\n\nPositivos: "+ pos +"\n\nNegativos: "+ neg +"\n\nNulos: " + nulos + "\n", "Información que cura", JOptionPane.INFORMATION_MESSAGE, null);
}
public void cantidadPositivos(){
int i=0;
numerosPositivos=新整数[pos];
NumerosNegatos=新整数[neg];
numerosNulos=新整数[nulos];
对于(i=0;i=1)
{
numerosPositivos=ArrayUtils.add(numerosPositivos,numeros[i]);
System.out.println(Arrays.toString(numeriospositivos));
}

否则,如果(numeros[i]在使用新int[4]时,会得到一个类似[0,0,0,0]的数组,因为int是基本的,所以它不能为null

ArrayUtil.add不会替换这些0值,因为它们是有效的条目,所以它只是将您的新数字附加到数组中

所以我建议从一个空数组开始

numerosPositivos = new int[pos];
public void cantidadPositivos(){
    int i = 0;
    numerosPositivos = new int[pos];
    numerosNegativos = new int[neg];
    numerosNulos = new int[nulos];
    for(i = 0; i < cantidadElementos; i++)
    {
        if(numeros[i] >= 1)
        {
            numerosPositivos = ArrayUtils.add(numerosPositivos, numeros[i]);
            System.out.println(Arrays.toString(numerosPositivos));   
        }
        else if (numeros[i] <=-1)
        {
            numerosNegativos = ArrayUtils.add(numerosNegativos, numeros[i]);
        }
        else
        {
            numerosNulos = ArrayUtils.add(numerosNulos, numeros[i]);
        }

    }
    JOptionPane.showMessageDialog(null, "De los [ "+cantidadElementos +" ] elementos en el vector:\n\nPositivos: "+ pos +"\n\nNegativos: "+ neg +"\n\nNulos: " + nulos + "\n", "Información que cura", JOptionPane.INFORMATION_MESSAGE, null);
}