Duda con array

Iniciado por anman, 29 Marzo 2008, 08:24 AM

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

anman

Tengo unas carpetas con una serie de fichero en cada una.En ellas hay 2 tipos de ficheros:los que tiene en la posicion 4 del nombre una v o los que tienen una f.
Quiero guardar en un array de bytes las de v y en otro las de f.El problema esque me guarda en la primera posicion el ultimo valor que toma y en las otras 0.¿Alguien me pude decir que estoy haciendo mal?


public static void dir(File dir, int nivel) throws IOException {

verdaderas = 0;
falsas = 0;
// Indentación según el nivel

String indentacion = "";

for (int i = 0; i < nivel+1; i++) {
    indentacion += " ";
}

// Listamos los ficheros y subdirectorios
File[] lista = dir.listFiles();
V = new byte[lista.length];
F = new byte[lista.length];

for (int i = 0; i < lista.length; i++) {
   
    if (!lista[i].isDirectory()) {

if (lista[i].getName().charAt(4) == 'v') {
V[verdaderas]++;
   
} else {
   F[falsas]++;
}


    } else {
System.out.println("Carpeta :" + lista[i].getName());
num++;//numero de carpetas

dir(lista[i], nivel + 1);

    }
} // end del for
   

System.out.println("La carpeta tiene " + verdaderas
+ " firmas verdaderas y " + falsas + " firmas falsas");

    } // end dir
public static void main(String[] args) throws IOException {


dir(f, 0);//f es el objeto file creado

for (int i = 0; i < num; i++) {
   
    System.out.println(V[i]);

}
System.out.println();
for (int i = 0; i < num; i++) {
    System.out.println(F[i]);

}

    }

anman

Yo creo que me gurda el ultio valor del array solo,porque es un metodo recursivo ¿como lo puedo solucionar?

Lu15_CL4

dices que te guarda solamente en la primera posicion, de cual de los dos arreglos??, en los dos?, no entiendo bien eso pork en ninguna parte veo que le guardes un valor a cualkiera de los arreglos, tienes esto:
Cita de: anman
if (lista.getName().charAt(4) == 'v') {
      V[verdaderas]++;
         
      } else {
         F[falsas]++;
      }
no es asi?
Cita de: anman
if (lista.getName().charAt(4) == 'v') {
                V[verdaderas]="aqui lo que le kieres guardar al arreglo";
      verdaderas++;
         
      } else {
                   F[falsas]="aqui lo que le kieres guardar al arreglo";
         falsas++;
      }
^^, nose muy bien.. no estoy familiarizado con tipos de datos "byte", pero por lo dices parece que es error de logica

en donde usas la variable "indentacion"? o.o
Te regalo .1 centavo de dolar diario, registrate aqui, pideme + info por PM ^^, el .1 centavo puede ir creciendo hasta el infinito!!! :xD ^^

anman

En el arreglo V me guarda el ultimo valor del contador V[verdaderas]++
En el arreglo F me gurda el ultimo valor del contador F[falsas]++.
Lo de la indentacion se puede suprimir.
Al ser un metodo recursivo en cada llamada guarda un valor del contador pero como es un metodo recursivo lo pone a 0 en la siguiente llamada

Lu15_CL4

Cita de: anman en  1 Abril 2008, 12:11 PM
Al ser un metodo recursivo en cada llamada guarda un valor del contador pero como es un metodo recursivo lo pone a 0 en la siguiente llamada

ok, ^^, si nomas eso que dices es el problema, ya tienes las variables como globales, inicializalas alla en 0 y las kitas de la funcion, nomas kita la inizialicion de la funcion, esto:

Cita de: anman en  1 Abril 2008, 12:11 PM
   verdaderas = 0;
   falsas = 0;

quitalo.
:D
Te regalo .1 centavo de dolar diario, registrate aqui, pideme + info por PM ^^, el .1 centavo puede ir creciendo hasta el infinito!!! :xD ^^