Java - Problema con BufferedReader y readLine()

   
Vista:

Problema con BufferedReader y readLine()

Publicado por Alejanfro (1 intervención) el 29/06/2010 17:20:21
Tengo el siguiente código:

package sqlite;

/**
*
* @author Alejandro
*/

import java.io.*;
import java.util.StringTokenizer;

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException
{
char opcion;
SetDeInstrucciones instrucciones = new SetDeInstrucciones();
BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
String nombreBD="";
System.out.println();
System.out.println("Bienvenido a SQLite");
System.out.println("=====================================");
do {
System.out.println();
System.out.println("Pulse una opción");
System.out.println("1.Abrir una nueva base de datos");
System.out.println("2.Crear una base de datos nueva");
System.out.println("3.Salir");
System.out.println();
opcion = (char) System.in.read();
System.out.println();

switch (opcion) {

case '1' : System.out.println("Introduzca el nombre de la base de datos a abrir (Introduzca nombre absoluto) ");
nombreBD = lector.readLine();

/* si el nombre introducido no empieza por "/" es que se está introduciendo
* un nombre relativo al directorio actual de ejecución
*/
nombreBD = nombreBD.trim();
try {
if (nombreBD.charAt(0) != '/') {
String dirActual = System.getProperty("user.dir");
dirActual.concat(nombreBD);
nombreBD = dirActual;

//Para controlar
System.out.print("El nombre de la base de datos es " + nombreBD);
}
File fichero = new File(nombreBD);
if (fichero.exists()) {
System.out.println("La base de datos se ha cargado correctamente");
System.out.println();
System.out.print("> ");
String instruccion = lector.readLine();
StringTokenizer analizador = new StringTokenizer(instruccion, "");
// Aquí vienen los juegos de instrucciones

}

else {
System.out.println("Error: el fichero indicado no existe o no es correcto");
System.out.println();
}
}
catch (StringIndexOutOfBoundsException e) {
System.out.println("No ha introducido un nombre de fichero");
}

break;
case '2' : System.out.println("Introduzca el nombre que le quiere dar a la nueva base de datos");
nombreBD = lector.readLine();
System.out.println(nombreBD);
System.out.println();
break;
case '3' : System.out.println ("Hasta pronto");
break;
default : System.out.println("No es una opcion válida. Repita, por favor");
break;
}

} while (opcion != '3');

}


}

El problema que tengo es en las dos líneas nombreBD = lector.readLine(); no sé por qué, pero no se para la ejecución del programa para esperar la entrada desde el teclado, de forma que nombreBD siempre es vacío .... ???? He buscado bastante por internet y veo que para leer un string desde el teclado, esta es la forma de hacerlo. Sin embargo no sé por qué pero no funciona. ¿Alguna ayuda? ¿Qué esto haciendo mal? Gracias. Un saludo
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

RE:Problema con BufferedReader y readLine()

Publicado por mayrita (163 intervenciones) el 29/06/2010 23:27:37
http://javafacil.netii.net/consola.php#teclado

BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));

System.out.println("Ingresa un numero:");
String n1 = br.readLine();
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

RE:Problema con BufferedReader y readLine()

Publicado por Sebastian (13 intervenciones) el 01/07/2010 10:21:34
BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
int opcion=Integer.parseInt(lector.readLine());

Con eso te aseguras de capturar un entero por teclado y pasarselo al case. Saludos
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

RE:Problema con BufferedReader y readLine()

Publicado por Rosa (1 intervención) el 02/07/2010 12:26:18
Muchas gracias Sebastian, me has solucionado una duda que tenia desde hace tiempo, soy muy novata en esto de Java. Gracias.
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