Dudillas al empezar con java

LR

Buenas,

Estoiy empezando a meterle mano a java y me han surgido un par de dudas/problemillas.

Antes de empezar con java, lo unico en lo que he programado ha sido en php asi que hay bastantes cosillas en las que estoy un poco perdido:

Que es mejor usar? un Scanner o un BufferedReader para pillar datos por teclado?

El problema que me ha surgido es al usar el Scanner (es lo unico que hemos usado hasta ahora en clase).

Estoy haciendo algunas pruebas y al usar nextInt seguido de un nextLine, no me pilla este ultimo, ya que no se por que, me pilla como que he insertado un salto de linea.

El problema es que si tengo por ejemplo una lista de opciones a elegir (numericas) y segun que funcion elija tengo que insertar distingos strings, el que hay justo despues del nextInt no me lo pilla.

He estado buscando y tampoco encuentro la manera de vaciar el Scanner para ver si asi se solucionaba el problema.

Alguna idea / consejo?

Khanser

Lo que pasa es que despues de poner el numero y darle al enter, el retorno de carro se guarda en el buffer y el nextline te devuelve el string hasta el primer retorno de carro y te pinta éste retorno, solo que como únicamente tienes un nextline, ves como el programa acaba. Ponle otro readLine y verás como se printa el retorno de carro y después espera a que le metas más fato.

Si quieres evitar esto usa "next" en vez de "nextLine", éste ultimo deberías usarlo solo con ficheros por lo que te he explicado antes.

1 respuesta
tOWERR

Yo utilizaba el BufferedReader.

dagavi

Anda que no mola empezar con Java después de tocar C y C++ donde leías de la entrada estándar, además de meterlo en el tipo conveniente, con un simple cin / scanf y de golpe te ves un:

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

No conocía el Scanner este, a ver si alguna vez, si es que me hace falta, me acuerdo de el xD

1 respuesta
LR

#2 ya vi que el problema era ese, por eso busque si habia forma de vaciarlo pero no he encontrado nada :S.
Ademas, al usar next, se supone que no puedes escribir espacios no? por eso lo del nextline.

Para arreglarlo lo que hice fue usar el BufferedReader como dice #4 pero aun asi, queria saber si habia alguna otra solucion y cual de los 2 aconsejais.

Usuarios habituales

  • LR
  • dagavi
  • tOWERR
  • Khanser