Ayuda con unos retornos de unos métodos

Hola
Tengo estos métodos que me muestran que les faltan el retorno pero yo los pongo pero no se si estén bien implementados..
------------------------------------------------------------------------------
public static void main(String[] args) {
Archivo objeto = new Archivo();
String rutaArchivo="";
objeto.calcularNumeroDeCaracteres(rutaArchivo);
}
-------------------------------------------------------------------------------
¿Tengo una pregunta como hago para que me cuente los caracteres totales de un archivo de texto? ¿Y cómo le pongo el retorno?
public int calcularNumeroDeCaracteres(String rutaArchivo) {
        try {
            File f = new File("C:/Users/tmp/archivo.txt");
            FileReader fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);
            String linea = "";
            int cont=0;
            while ((linea = br.readLine()) != null) {
            cont++;
            }
            br.close();
            fr.close();
           return cont;
        } catch (Exception e) {
            System.out.println(e);
        }
    }

1 respuesta

Respuesta
1
el primer problema con respecto a los del return es que solo tienes return dentro de try, imaginate que captura una excepcion se salta el try no pasa por el return y llega al catch donde no hay return entonces practicamente no tiene nada que retornar. 
Tienes dos soluciones o poner un return en el catch o poner el return afuera del try y del catch.
La segunda duda para contar los caracteres solo tienes que agarra linea y darle un linea. Length, esto te devuelve cuantos caracteres hay incluyendo espacios en blanco, tabuladores y otros, y ya lo vas sumando por cada linea así como haces con cont. Si lo que quieres es unicamente contar los caracteres sin espacios en blanco tienes que hacer una función, pero me comentas y si necesitas eso te lo detallo.
El codigo que te propongo seria asi:
public int calcularNumeroDeCaracteres(String rutaArchivo) { 
        try { 
            File f = new File("C:/Users/tmp/archivo.txt"); 
            FileReader fr = new FileReader(f); 
            BufferedReader br = new BufferedReader(fr); 
            String linea = ""; 
            int cont=0; 
            int caracter = 0;
            while ((linea = br.readLine()) != null) { 
            caracter+=linea.lenght;
            cont++; 
            } 
            br.close(); 
            fr.close(); 
           return cont; 
        } catch (Exception e) { 
            System.out.println(e); 
            return 0;
        } 
    }
Hola
Amigo y te quiera preguntar por ejemplo el mismo caso para devolver todo el contenido del texto lo tengo así..
public String leerArchivoString(String rutaArchivo)  {
         try {
            File f = new File("C:/Documents and Settings/tmp/archivo.txt");
            FileReader fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);
            String linea = "";
            while ((linea = br.readLine()) != null) {
            }
            br.close();
            fr.close();
            return linea;

        } catch (Exception e) {
            System.out.println(e);
        }
    }
ahi puse el return de la linea pero me sigue marcando error tengo que poner tambn el return como el otro en el catch ??
Gracias..
Disculpa me equivoque en donde puse el } como te mencionaba es adentro del try entonces seria así:
public String leerArchivoString(String rutaArchivo)  { 
         try { 
            File f = new File("C:/Documents and Settings/tmp/archivo.txt"); 
            FileReader fr = new FileReader(f); 
            BufferedReader br = new BufferedReader(fr); 
            String linea = ""; 
            while ((linea = br.readLine()) != null) { 
            br.close(); 
            fr.close(); 
            return linea; 
<span style="white-space: pre;"> </span>
        } catch (Exception e) { 
            System.out.println(e); 
<span style="white-space: pre;"> </span>    return 0;
        } 
    }
el problema que tienes en tu archivo es que te va a decir que hay un catch sin un try porque deben ir seguidos es como un if con un else o tambien puede ser.
public String leerArchivoString(String rutaArchivo)  { 
    String linea = "";   
       try { 
            File f = new File("C:/Documents and Settings/tmp/archivo.txt"); 
            FileReader fr = new FileReader(f); 
            BufferedReader br = new BufferedReader(fr); 
            while ((linea = br.readLine()) != null) { 
            br.close(); 
            fr.close(); 
        } catch (Exception e) { 
            System.out.println(e); 
        } 
<span style="white-space: pre;"> </span>return linea;
    }
Debería de funcionar.
Hola mira gracias por tu ayuda anterior me sirvió


public static void main(String[] args) { 
Archivo objeto = new Archivo(); 
String rutaArchivo=""; 
objeto.calcularNumeroDeCaracteresDeLinea(rutaArchivo, int numeroLinea); 

-------------------------------------------------------------------------------
Ahora mira tengo este método que me calcula el numero de caracteres de cada linea..
¿Se supone que así esta bien pero arriba en el main me muestra error el numeroLinea por que seria? ¿Los retornos esta bien cierto?
public int calcularNumeroDeCaracteresDeLinea(String rutaArchivo, int numeroLinea) {
         try {
            File f = new File("C:/Documents and SettingsTmp/archivo.txt");
            FileReader fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);
            String linea = "";
            while ((linea = br.readLine()) != null) {
             numeroLinea = linea.length();
            }
            br.close();
            fr.close();
            return numeroLinea;
        } catch (Exception e) {
            System.out.println(e);
              return 0;
        }
    }
El retorno del try esta malo antes de br. Close(); tienes } ese lo tienes que quitar, ahora si el método lo estas usando para retornar el numero de caracteres en tal linea, no esta bien, porque ahí te va a retornar el numero de todos los caracteres del archivo porque ahí esta recorriendo todo el archivo linea a linea y sumando lo de todas las lineas.
Como lo implementaría
Que te devuelva el numero de carácter por linea, podrías agregar un if y que te compare cuando el while vaya por esa linea entonces que entre y ponga el tamaño algo así.
public int calcularNumeroDeCaracteresDeLinea(String rutaArchivo, int numeroLinea) { 
         try { 
            File f = new File("C:/Documents and SettingsTmp/archivo.txt"); 
            FileReader fr = new FileReader(f); 
            BufferedReader br = new BufferedReader(fr); 
            String linea = ""; 
             int i = 1;
            while ((linea = br.readLine()) != null) { 
             if(i = numeroLinea){
                numeroLinea = linea.length(); 
             }
            i++;
            br.close(); 
            fr.close(); 
            return numeroLinea; 
        } catch (Exception e) { 
            System.out.println(e); 
              return 0; 
        } 
    }
Aunque es un poco ineficiente porque imaginate que buscar la linea 1 y tu archivo tiene 1000 lineas igual va a recorrer todo el archivo para ir a traer el largo de la primera linea, lo mejor que puedes hacer es poner un botón de cargar archivo y entonces tienes un arreglo de String y si te dicen linea 5 solo accesas a la posición 5 y ya haces un return de el length de ese String en esa posición, pero el anterior tiene que funcionar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas