Java - Por qué no aparece la opcion "Buscar palabra"?

 
Vista:
Imágen de perfil de Geraldine
Val: 51
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Por qué no aparece la opcion "Buscar palabra"?

Publicado por Geraldine (25 intervenciones) el 22/05/2018 21:14:54
Tengo un problema, estaba haciendo este ejercicio y según lo que nos explico el profe para mostrar el resto de las opciones tenemos que declarar en el Main Class el "nombre de la clase"."El método que creamos"

El problema se presenta en la linea numero 35 de la Clase Procesador, el cual al declararlo en la Clase Principal como Procesador.buscar(archivo) este NO aparece... y no se porque. Deberia mostrarse en pantalla esto:

Opcion


CLASE PROCESADOR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package PLector;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
 
//                          Definiremos los siguientes métodos estáticos: 
//1) Que reciba un parámetro de tipo String que indique "el nombre de un archivo" con su extensión, 
//retornara el "número de líneas de texto que hay en el archivo". 
//2) Que reciba un parámetro de tipo String que indica el nombre de un archivo con su extensión y 
//pedirá una palabra e indicara  cuantas veces la palabra aparece en el archivo en caso contrario 
//indicarlo con un mensaje. 
public class Procesador {
    //1)
    public static int cantLineas(String arch) throws IOException{
        //Variables:
        Scanner linea = new Scanner(new File(arch));
        int lineas = 0;
 
        while (linea.hasNextLine()) {
            linea.nextLine();
            lineas++;
        }
        linea.close();
        return lineas;
    }
    //2)
    public static void buscar(String arch) throws IOException{
        //Variables:
        Scanner teclado = new Scanner(System.in);
        String palabra = "";
        String resp = "";
        String p;
 
        while (resp.equalsIgnoreCase("S")) {
            System.out.print("Ingrese la palabra a buscar: ");
            palabra = teclado.next();
 
            Scanner linea = new Scanner(new File(arch));
            int contP = 0;
            while (linea.hasNextLine()) {
                String palab = linea.nextLine();
 
                Scanner separador = new Scanner(palab);
                while (separador.hasNext()) {
                    p = separador.next();
 
                    if (p.equalsIgnoreCase(palabra)) {
                        contP++;
                    }
                }
                linea.close();
                if (contP != 0) {
                    System.out.println(palabra + " aparece en el archivo: " + contP + " veces \n");
                }else{
                    System.out.println(palabra + " no aparece en el archivo \n");
                    System.out.print("Desea efectuar otra busqueda?  S-->Si, N-->No: ");
                    resp = teclado.next();
                    System.out.println();
                }
            }
        }
    }
 
}

PRINCIPAL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package PLector;
import java.io.IOException;
import java.util.Scanner;
 
public class Principal {
 
 
    public static void main(String[] args) throws IOException {
        //Variables:
        Scanner teclado = new Scanner(System.in);
        String archivo;
        int nombreArch, cantLineas;
 
        System.out.print("Indique con 1--> Fabula0.txt o 2--> Fabula1.txt el archivo a usar: ");
        nombreArch = teclado.nextInt();
 
        if (nombreArch == 1) {
            archivo = "Fabula0.txt";
        }else{
            archivo = "Fabula1.txt";
        }
        cantLineas = Procesador.cantLineas(archivo);
        System.out.println("\nHay en el archivo: " + cantLineas + " lineas de texto.");
        Procesador.buscar(archivo);
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 18
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Por qué no aparece la opcion "Buscar palabra"?

Publicado por Xibhu (19 intervenciones) el 25/05/2018 10:30:36
Así sin ejecutar y con solo verlo por encima, te puedo decir que el error no está en la línea 35, sino en la 34, en la propia condición del while.

Es decir, el bucle while se ejecuta mientras la condición que contiene es TRUE, en este caso mientras `resp` sea igual a "S". ¿Pero justo antes cómo declaras `resp`? pues como "" (vacío), es decir que "" (vacío) es distinto de "S" y por lo tanto la condición es FALSE.

Una solución es la estrategia de la lectura anticipada, es decir, antes de bucle while, haces resp=teclado.next() una sola vez para que `resp` tenga un valor que sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar