¿Cómo puedo hacer una nueva matriz y copiar todos los elementos de postive de la otra matriz en la nueva matriz y devolverlo?

Erik Macias :

Este método devuelve una matriz que contiene los elementos positivos de la matriz de parámetros. Para hacer eso, calcular el número de elementos positivos en la matriz en y almacenar el valor obtenido en los Nelements variables de tipo entero, declaran la doble salida de matriz de tamaño Nelements, copia los elementos positivos de en en la salida de matriz, y devolver la salida de matriz. Si todos los elementos de la matriz en son no positiva, su método debe devolver una matriz de tamaño 1 y el único elemento de la matriz devuelta se asigna el valor -1.

Mi pregunta aquí es cuando ejecuto mi programa se afirma Excepción en el hilo "principal" java.lang.NegativeArraySizeException y no sé cómo lo saca y sólo devuelve los elementos positivos.

El Java-Code:

public static double [] partialPositiveArray(double [] in)

   {

   int nElements = 0;

   for(int i = 0; i < in.length; i++)
   {
     if(in[i] > 0)
     {
        nElements = (int)in[i];

     }
     else if(in[i] <= 0)
     {
        nElements = -1;
     }
  }
  double [] output = new double[nElements];


  for(int i = 0; i < in.length; i++)
  {
     output[i] = nElements;

  }

  return output;

  }
SwissCodeMen:

con este código va a agregar todos los números positivos. la suma en este ejemplo es 60,7 y para todos los números negativos se escribirá -1 en el negativo-array. en este ejemplo dos veces.

Código:

public class NegativeAndPositiveNumbers {
    public static void main(String[] args) {
        double[] arr = {25.0, -7.0, 10.7, 25.0, -64.0};
        System.out.println(partialPositiveArray(arr));

        int negative[] = negativeArray(arr);
        for (int i = 0; i < negative.length; i++){
            System.out.print(negative[i] + " ");
        }
    }

    public static double partialPositiveArray(double[] in) {
        double nElements = 0;

        for (int i = 0; i < in.length; i++) {
            if (in[i] > 0) {
                nElements += in[i];
            }
        }
        return nElements;
    }

    public static int[] negativeArray(double[] in) {
        int[] negativeWithZero = new int[in.length];
        int index = 0;

        for (int i = 0; i < in.length; i++) {
            if (in[i] <= 0) {
                negativeWithZero[index] = -1;
                index++;
            }
        }
        int[] negative = new int[index];

        for (int j = 0; j < negative.length; j++){
            negative[j] = negativeWithZero[j];
        }

        return negative;
    }
}

Creo que se podría resolver con mayor facilidad, pero funciona de todos modos. Espero que todo está claro

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=321043&siteId=1
Recomendado
Clasificación