Array y bucle for

Iniciado por Dem0ny, 2 Enero 2010, 22:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Dem0ny

Hola!

Al grano! Estoy haciendo un programa en el cual segun lo tengo diseñado, un metodo reciba 2 vectores y posteriormente invoque a otro metodo, sin devolver nada. Vamos bien.. pero ahora bien, al recibir, 2 vectores debo comparar la uno de ellos en función de otro. Me explico.

Supongamos que tengo un metodo (inventado sobre la marcha) que recibe una lista de x nombres de dependientas de un establecimiento y tienen otro vector que recibe una lista correspondiente al nombre con el dinero que cobra cada dependienta. Quiero almacenar en 2 nuevas matrices... los nombres y el dinero exacto que cobran las dependientas que tengan mas de 1000 euros.

Código (java) [Seleccionar]
public static void Saldo (String []nombres, int dinero[]{
                //Creo los nuevos vectores apuntando a null ya que no se la longitud de las nuevas matr.
                String nombre2[] = null;
                int dinero2[] = null;
               //Inicio bucle for...para recorrer e ir añadiendo segun los requerimientos:
              for(int i=0; nombres.legth;i++){
                   if(dinero[i]>=5){
                        nombre2[i]=nombre[i];
                        dinero2[i] = dinero[i];
                    }
             }
           metodo_imprimir (nombre2,dinero2);
    }


El error viene dado por una excepción por el null de las dos matrices. (NullpointerException). Que para este caso en concreto por mas que miro... nose.. creo que se me escapa algo y nose qué.

También pensé en crear un contador, dentro de la matriz para que cuando acabase el bucle se quedara definida la dimension del vector, pero es una tonteria, teniendo en cuenta que eso lo hace la variable i del bucle for.

Otra cosa que pense es inicializar las matrices dentro del bucle pero no tiene sentido, el error seguiría viniendo al ser declaradas como null y cada interación del bucle volveria a crear la matriz. No sé si me comprendeis.

Algo se me escapa, alguien me ayuda?

P.D. El programa no es el real, es meramente un ejemplo..

P.D.2. La duda real sería, ¿Como utilizar un array unidimensional con una longitud variable que no sabemos y que viene dada dependiendo de otra dentro de un bucle for?

Saludos!

Dem0ny

He tenido un problema con el navegador y sin querer he posteado 3 veces. Disculpen las molestias, borrare ahoramismo los post.

Leyer

y por que no la inicializas al inicio String nombre2[] = new String [nombres.length];  :huh:

Dem0ny

Este es el post bueno.

Por la sencilla razón de que la dimensión de la matriz nueva no es igual que la de la matriz antigua, me explico:

Si tu tienes 20 empleados con 20 nombres y con 20 sueldos... y quieres saber cuales de ellos pasan de 1000 euros... Tu no sabes cuantos hay, creas un programa para saberlo.

Por tanto no tienes forma de inicializar antes con 10 o 12 o 15 empleados ...

Comprendes?

Leyer

#4
entiendo
Código (java) [Seleccionar]

public void method_1(String []nombres, int dinero[]){
String nombre2[] = null;
       int dinero2   [] = null;
       int c=0, y=0;
       for(int i=0;
        i<dinero.length;i++){
        if(dinero[i]>=5)c++;
        if(i==dinero.length-1){
           nombre2 =new String[c];
           dinero2 =new int   [c];  
          for(int index=0;
          index<dinero.length;index++){    
            if(dinero[index]>=5){
            nombre2[y] = nombres[index];
                        dinero2[y] = dinero [index];
                        y++;
            }
            }
            }
       }
}


Saludos.!

Dem0ny

que yo me entere, creas una variable,  que pueda calcular la longitud con contadores y demás. y una vez calculada la longitud tienes ya todo. Para hacerlo normal...

No se podría hacer en un solo bucle verdad? Daría error al completar nombre2 y dinero2 no?

Leyer

-.-! si se podria pero se nececitarian comprobaciones innecesarias el cual reduces con otro for ademas por que lo quieres hacer con un solo for?? si es por velocidad creo que estas midiendo mal la velocidad de java

panaka

No se si has visto la respuesta que te puse en uno de los otros post y el uso de ArrayList, pero creo que es lo mas simple y con solo un bucle.

Saludos



Chuck Norris es tan friki tan friki que ve la televisión en el osciloscopio

Dem0ny

Postealo si no te importa porfavor.

@LEYER: Lo digo porque esto es un ejemplo tonto de un programilla que tengo que hacer para clase y nada intento hacerlo lo mas simplificado posible ya que se valora el tema de orden de complejidad y demás lios... intento poner los menos bucles posibles :D

Leyer

haa ok, bueno yo no use array list como lo iso panaka ya que estas trabajando con arreglos pero si lo usas te simplificara mas las cosas pero tendras que modificar los parametos a quien le devolveras los nuevos valores