Lectura de datos en Java con Scanner

01/Ene/2009 Java , , , , , , , 31 Comentarios
Programación en Java

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;

Vídeos sobre Java Util


31 comentarios en “Lectura de datos en Java con Scanner”

Víctor Cuervo

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

Víctor Cuervo

Pancho

puedes usar JDialog que es modal en lugar de JFRAme

Víctor Cuervo

Víctor Cuervo

Quizás lo explicado en «Evitar que un programa Java se cargue dos veces» pueda servirte de utilidad.

Evitar que un programa Java se cargue dos veces

Saludos.
Víctor.

Víctor Cuervo

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.

Víctor Cuervo

erika cewly

hola quisiera saber como Leo un archivo con 2000 palabras y me indique cuantas vocales hay en cada palabra

Víctor Cuervo

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.

Víctor Cuervo

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!

Víctor Cuervo

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

Víctor Cuervo

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.

Víctor Cuervo

Robin

Para que capture dos o mas palabras usa al final Line.

nombre=teclado.nextLine();

Víctor Cuervo

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.

Víctor Cuervo

jmmr

Hola tengo una duda, porque pones eel signo de admiracion antes de escribir sTexto, cual es su funcion?

Víctor Cuervo

User

Gracias por el aporte
Scanner ayuda mucho en vez de hacer una clase que lea

Excelente aporte Gracias

Víctor Cuervo

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.

Víctor Cuervo

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

Víctor Cuervo

@Angel Pérez,

Muy buen detalle. Lo hemos incluido al artículo. :-D

Víctor Cuervo

Víctor Cuervo

Víctor Cuervo

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?

Víctor Cuervo

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.

Víctor Cuervo

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!!!!

Víctor Cuervo

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

Víctor Cuervo

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

Víctor Cuervo

lineadecodigo

@DaTmEr,

Explica tu problema en nuestros foros

http://www.dudasprogramacion.com

Para que podamos ayudarte todos.

Víctor Cuervo

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].

Víctor Cuervo

vic

soy novato tambien.te sugiero q primero propongas una sintaxis y hagas identificacion d caracteres

Víctor Cuervo

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.

Víctor Cuervo

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.

Víctor Cuervo

lineadecodigo

@Diego,
Me alegro que te haya servido de ayuda.

Víctor Cuervo

Diego

Me anduvo al pelo, muchas gracias por la info!!!
salu2!

Víctor Cuervo

lineadecodigo

¿Qué código utilizas? ¿Qué error te da?

Víctor Cuervo

sdsdfdfdf

no funciona el scanner instaciandolo

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*