contar dígitos mientras se lee de un archivo

digamos que tengo un archivo de números en su mayoría, y algunas letras

1
4
5
d o
2
8 22
6
f

así que quiero contar cuántos números y letras, y solo puedo usar el método nextInt(). Aquí está el código que estoy usando, pero por alguna razón obtengo un ciclo sin fin, después de hacer algo de depuración (entrada de impresión) se detendrá en el número 5. ¿Por qué estoy haciendo mal aquí?

public static void mixedF() {
        int numbers = 0; 
        int words = 0;
        int num;      
        try {
            Scanner in = new Scanner(new File("myFile.txt"));
            while(in.hasNext()) {
                try {
                    num = in.nextInt();
                    System.out.println(num);
                    numbers++; 
                }
                catch (InputMismatchException e) { words++; }              

                }            

            System.out.println("numbrers: "+numbers);
            System.out.println("words: "+words);
        }
        catch (FileNotFoundException ex) { ex.getMessage(); }        
    }

preguntado el 28 de julio de 12 a las 07:07

2 Respuestas

Necesitas agregar in.next(); a catch, de lo contrario el scanner no avanzará.

Respondido 28 Jul 12, 08:07

sí, me acabo de dar cuenta de que tengo un bucle sin fin en la instrucción catch - miatech

Problema: Estás leyendo enteros solo usando la función nextInt().

Cuando Scanner se encuentra con un personaje, va al bloque catch. Intente avanzar el escáner en el bloque de captura o el carácter 'd' se leerá una y otra vez

Respondido 28 Jul 12, 08:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.