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]);
}
}
Yo creo que me gurda el ultio valor del array solo,porque es un metodo recursivo ¿como lo puedo solucionar?
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
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
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