
Como bien me ha recordado mi amigo Jose Ignacio y algún comentario de nuestros lectores, desde Java 1.5 disponemos de la clase Scanner. La cual nos va a ayudar a leer los datos de una forma más sencilla que el habitual manejo de InputStream, véase Lectura de datos por Consola con Java.
La utilización de la clase Scanner es muy sencilla. Lo primero que tenemos que hacer es declarar un objeto Scanner instanciandolo contra la consola, es decir, contra el objeto System.in
Scanner reader = new Scanner(System.in);
Ahora, para leer lo que el usuario está introduciendo por la consola deberemos de utilizar el método .next. Este nos devolverá los caracteres que encuentre en la consola hasta encontrarse un retorno de carro y salto de línea. El valor se lo asignaremos a una variable String.
String sTexto = reader.next();
Para complicar un poco nuestro ejemplo, vamos a hacer eco de las palabras recibidas hasta que el usuario teclee «FIN». Es por ello que utilizamos un bucle do-while. El código nos quedará de la siguiente forma:
do { sTexto = reader.next(); System.out.println(sTexto); } while(!sTexto.equals("FIN"));
Importante es que te acuerdes que es necesaria la clase java.util para que todo funcione. Así al principio del programa incluiremos:
import java.util.Scanner;
ayuda
hola, como hago en eclipse, con lenguaje java, para que solo habrá una interfaz, una gui y no varias a la vez?
solo necesito que habra una, y al cerrar abrir otra, pero no muchas a la vez, ayuda porfavor
o alguna pagina de pseucodigos que recomienden
Pancho
puedes usar JDialog que es modal en lugar de JFRAme
Víctor Cuervo
Quizás lo explicado en «Evitar que un programa Java se cargue dos veces» pueda servirte de utilidad.
Saludos.
Víctor.
José
Hola quisiera saber si es posible cumplir este requerimiento. Tengo que poder registrar en una base datos tiempos de duración de actividades. Mi idea era hacerlo por medio de lectoras de código de barras conectadas a un host. Para eso previamente generaría dos códigos de barras idénticos que describan la actividad pero uno indicando que es inicio y otro final de actividad. El problema esta en que previamente el usuario debe leer su código personal para asignar a quien pertenece la actividad. Y en el medio pueden existir otras lecturas de otras lectoras. Ojala puedan orientarme.
erika cewly
hola quisiera saber como Leo un archivo con 2000 palabras y me indique cuantas vocales hay en cada palabra
Víctor Cuervo
Erika,
Puedes combinar los ejemplos que muestran cómo leer un fichero de texto (http://lineadecodigo.com/java/leer-fichero-de-texto-con-java/) con el que explica cómo contar las vocales de una palabra (http://lineadecodigo.com/java/contar-las-vocales-de-una-palabra-con-java/) y será muy sencillo. Espero que esto te pueda orientar.
Saludos.
Allan Castro Morales
Tengo un proyecto en la universidad y he querido valorar la entrada de datos de un menu que tiene tres opciones en donde la opcion «3» es salir… He querido hacer un default que evalue si el usuario digita cualquier otro caracter que no corresponda a las opciones del menu, pero no conozco que tipo de funcion usar para que si el usuario digita, por ejemplo una letra en vez de un numero, muestre un mensaje que le diga al usuario que la opcion no existe, que digite una opcion valida!
Aclaro que la variable opcion es de tipo String y los casos de la condicional switch estan valorados como String… El programa corre bien si el usuario digita 1, 2 y 3 pero si digita cualquier otro caracter no muestra el mensaje de que la opcion no existe ya que no se como valorarlo despues de 3, solo si el campo esta vacio muestra el mensaje ya que es lo unico que he podido valorar hasta el momento. Aqui dejo la parte en la que necesito ayuda con el fin de que alguien me pueda decir como valorar el resto de caracteres q por error pueda digitar el cliente…
default: {
if (opcion.equals(«»)) {
mostrar(«LA OPCION QUE DIGITO NO EXISTE, POR FAVOR DIGITE UNA OPCION VALIDA»);
mostrar(«»);
}
break;
}
}
} while (!opcion.equals(«3»));
De antemano muchas gracias!
ivan
saludos…tengo un proyecto donde tengo que utilizar un lector de barras con netbeans y q al validar un codigo de barras con la base de datos me permita accesar al sistema q estoy realizando en caso contrario me envie un mensaje de error o algo similar… no se si me puedas orientar, te lo agradeceria mucho
lalo
Como hago para que lea 2 palabras como un nombre: José Agustín
Al escribirlo solo me devuelve José
He utilizado BufferedReader para solucionarlo, pero quiero saber si se puede con Scanner
gracias.
Robin
Para que capture dos o mas palabras usa al final Line.
nombre=teclado.nextLine();
Víctor Cuervo
@jmmr,
Para invertir la decisión de la condición es decir, que estaremos en el bucle mientras que la palabra sea distinta de «FIN». Diríamos que lo podríamos traducir como distinto.
jmmr
Hola tengo una duda, porque pones eel signo de admiracion antes de escribir sTexto, cual es su funcion?
User
Gracias por el aporte
Scanner ayuda mucho en vez de hacer una clase que lea
Excelente aporte Gracias
Víctor Cuervo
@Kevin Arnold,
Muy buena web para los que empiezan. Sin dudar la hemos añadido a nuestra sección de enlaces http://lineadecodigo.com/enlaces/
Mucho ánimo con la web.
Kevin Arnold
Chévere ha…
aquí les dejo una web donde se postea temas en java desde lo básico hasta lo avanzado…
http://www.todoenjava.blogspot.com
Víctor Cuervo
@Angel Pérez,
Muy buen detalle. Lo hemos incluido al artículo. :-D
Víctor Cuervo
@Rodrigo,
Los ejemplos los tienes en:
Espero que te sirvan.
Rodrigo!
Como hago un programa que me multiplique, sume y/o reste 2 numeros que yo los ingrese y que ese programa contenga la funcion scanner?
Angel Pérez
Muy bueno el ejemplo, y si, es mas facil pedir datos por consola de esta manera, sin embargo, seria bueno que aclares que necesitas cargar la libreria que te permite hacer esto.
Para ello anexas a la linea de codigo:
java.util.Scanner;
O en su defecto
java.util.*;
De lo contrario te lanzara un error de compilacion diciendo que no encuentra la clase.
diego
bueno les podria servir un modelo que encontre en youtube recientemente, el programador ingresa una funcion y la evalua el enlace es:http://www.youtube.com/watch?v=6XSe-r69lAQ&feature=related
(Metodo del trapecio extendido en java)….xf si encuentran mayor informacion me podrian ayudar con estO tb!!!!
Leonardo
Tengo exactamente la misma duda que John Edison Briceño, me exigen que en una sola entrada, el usuario defina la operación deseada, con cualquiera de las X variables que tengamos iniciadas anteriormente. las operaciones podrían ser del tipo a++ * –b. Muchas gracias por cualquier ayuda que nos pudieran brindar
mateo brazeiro
tengo clase usuario, jugador, propietario, administrador.las clases jugador, propietario, administrador heredan de usuario quiero validar el usuario.
la clase usuario tiene nombre completo, nombre usuario y contraseña
desde ya gracias
lineadecodigo
@DaTmEr,
Explica tu problema en nuestros foros
http://www.dudasprogramacion.com
Para que podamos ayudarte todos.
DaTmEr
Hola tengo un pequeño problema con la interpretacion de las lineas de codigo de un programa, si alguien pudiera ayudarme podria contactarme para enviarle el programa y me lo pueda interpretar, gracias.
Mi correo es [email protected].
vic
soy novato tambien.te sugiero q primero propongas una sintaxis y hagas identificacion d caracteres
John Edison Briceño
Buenas tardes,
Alguien podra ser tan amable de colaborarme en un tema. Lo que pasa es que tengo que hacer un programita para calcular el metodo de trapecios. Mi problema mayor es encontrar una funcion o metodo en java que me lea una funcion matematica, por ejemplo: que el usuario digite sin (x)+4, y que el programa sea capaz de interpretar que x es la variable para luego ir reemplazando por algunos valores de x y generar un resultado. Mil gracias por su colaboracion.
vic
Hola a todos, esta clase me parece muy util, pero mi consulta es que si se puede utilizar con sockets, necesito desarrollar una clase que se comunique con una servidor, y este le da datos pero en varias lineas y necesito leer una a una y realizar comparaciones, la clase que desarrolle se queda a la espera de la entrada de datos y no lee nada, he probado con la clase buffered reader y con esta todo ok.
lineadecodigo
@Diego,
Me alegro que te haya servido de ayuda.
Diego
Me anduvo al pelo, muchas gracias por la info!!!
salu2!
lineadecodigo
¿Qué código utilizas? ¿Qué error te da?
sdsdfdfdf
no funciona el scanner instaciandolo