Lectura de datos por consola en Java

16/Dic/2006 Java , , , , , , 23 Comentarios
Programación en Java

Para realizar lecturas de datos por consola en Java debemos de apoyarnos sobre la clase System. Y en concreto sobre System.in. Si accedemos directamente sobre dicha clase, lo que obtendremos serán lecturas de caracteres. Es por ello que tenemos que ver como facilitar esta lectura.

Para realizar una lectura de datos más sencilla y hacerlo mediante cadenas de caracteres (String) debemos de de utilizar un Buffer de lectura. En este caso nos apoyaremos sobre la clase BufferedReader.

Todo código que realice una lectura de streams, en este caso por la consola, se monta mediante wrapping de clases. Es decir, sobre la consola, montamos un input stream (InputStreamReader), y sobre este un Buffer (BufferedReader). Veámos como es la línea de código:

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

Manejar el buffer es muy sencillo ya que simplemente deberemos de ejecutar lecturas por línea.

sTexto = br.readLine();
System.out.println(sTexto);

Y ¿cuando acabar? Pues deberemos de escoger una palabra que denote que es la última a introducir por la consola. Eso si queremos que el programa no sea infinito. En nuestro caso, no hemos puesto mucha imaginación. Ya que la palabra ha sido “FIN”.

do {
  sTexto = br.readLine();
  System.out.println(sTexto);
} while(!sTexto.equals("FIN"));

Vídeos sobre Java


23 comentarios en “Lectura de datos por consola en Java”

Víctor Cuervo

Frnaklin Herrera

Buena explicación.

Víctor Cuervo

Víctor Cuervo

Gracias Franklin. Nos alegra que te haya gustado.

Saludos.

Víctor Cuervo

edgar

hola podrian ayudarme
como sumo dos numeros en eclipse y cual es el codigo porfavor si

Víctor Cuervo

Víctor Cuervo

@edgar, Tienes el ejemplo explicado en http://lineadecodigo.com/java/sumar-dos-numeros-con-java/
Espero que te sea de utilidad.

Víctor Cuervo

Víctor Cuervo

@Andre, me alegra mucho que te haya servido. :-D

Víctor Cuervo

Andre

Ésta es la primera publicación que encuentro que realmente me funciona en netbeans 7.2. Únicamente hay que agregarle un try-catch y funciona de maravilla. Aparte es simple de utilizar y de entender. Muchas gracias por la ayuda!

Víctor Cuervo

Víctor Cuervo

@jose,

Cuando dices que se te cuelga, ¿qué es lo que pasa? Realmente debería de aparecerte un cursor en la consola para introducir el texto. ¿No te aparece?

En nuestro caso hemos cogido FIN para terminar. Pero la imaginación al poder… puedes cambiar FIN por la que quieras :-D

Víctor Cuervo

Jose

Probe con este codigo y se cuelga cundo debe de pedir el ingreso del dato por teclado

Saben porque pasa eso?
Muchas gracias !!

sTexto = br.readLine();
System.out.println(sTexto);

Y ¿cuando acabar? Pues deberemos de escoger una palabra que denote que es la última a introducir por la consola. Eso si queremos que el programa no sea infinito. En nuestro caso, no hemos puesto mucha imaginación. Ya que la palabra ha sido “FIN”.

do {
sTexto = br.readLine();
System.out.println(sTexto);
} while(!sTexto.equals(«FIN»));

Víctor Cuervo

Sairus

En el try si altura es negativa o 0 conduce a un error
Para que el rectángulo «tenga superficie» sus dimensiones deben ser > 0

while(altura<=0);
Obj_Rectangulo.Procesar();
Obj_Rectangulo.Imprimir();
}

Espero haber comprendido el problema

Víctor Cuervo

Gooll

¿¿¿como ingresar datos
y o recibir valores si clases????
sin buffereader
sin stringreader

Víctor Cuervo

alexander

lectura de datos:

int n;
String nom;
System.our.println(«ingrese numero»);
n=Integer.parseInt(br.readLine());
System.our.println(«ingrese nombre»);
nom=(br.readLine());

visita:
http://www.programandoconjava.es.tl

Víctor Cuervo

Miguel R.

hola ocupo en java un codigo que me permita leer los datos de un archivo txt y poder utilizar los datos del archivo dentro de mi programa!!
Saludos!!

Víctor Cuervo

Rych

gente hola soy principiante necesito ayuda observen que hice mal:
(por cierto se trata de leer dos datos desde el teclado y usar métodos ando perdido)…

import java.io.*;
public class Rectangulo_Funcion{
public static void main(String args[])
throws java.io.IOException{
String cadena;

DataInputStream recibeDatos = new DataInputStream(System.in);
Rectangulo_Funcion Obj_Rectangulo=new Rectangulo_Funcion();
Obj_Rectangulo.Procesa_Rectangulo();

}
double base=0, altura=0, area=0, perimetro=0;
void Procesa_Rectangulo() {
while(base!=99999){
//_______________________________________________________
//Captura la Base desde el Teclado
System.out.println(«\n Programa No. 1 (Rectángulo) «);
System.out.println(«Base=99999 Para salir del programa»);
System.out.println(«———————————-«);

do{
System.out.print («Base: «);
cadena=recibeDatos.readLine();

try{
base=Double.parseDouble(cadena);
if(base<=0){
System.out.println ("Dato incorrecto");
System.out.println ("——————");
}
}catch(NumberFormatException e){
System.out.println("Debe introducir un valor positivo");
System.out.println ("——————————–");

}
}while(base<=0);

if(base==99999) continue;

//_______________________________________________________
//Captura la Altura desde el Teclado

do{
System.out.print ("Altura: ");
cadena=recibeDatos.readLine();

try{
altura=Double.parseDouble(cadena);
if(altura<=0){
System.out.println ("Dato incorrecto");
System.out.println ("—————-");
}
}catch(NumberFormatException e){
System.out.println("Debe introducir un valor positivo"); System.out.println ("——————————–");
}
}while(altura<=0);
Obj_Rectangulo.Procesar();
Obj_Rectangulo.Imprimir();
}
}

void Procesar(){
area=base*altura;
perimetro=base*2+altura*2;

}

void Imprimir(){
System.out.println("\nResultados");
System.out.println("————-");
System.out.println("Area…..= "+area);
System.out.println("Perímetro= "+perimetro+"\n\n");
}
}

Víctor Cuervo

Kelvin

Scanner y BufferedReader te permiten leer valores desde consola pasando directa o indirectamente un objeto System.in. Una diferencia es que para leer nuevos valores de consola con Scanner debes crear un objeto Scanner nuevo pasando System.in. Con BufferedReader no sucede así, ya que puedes leer nuevos valores utilizando la misma referencia llamando al metodo read() o readLine(). Scanner tiene una ventaja es que puedes separar una cadena en subcadenas usando un delimitador con el metodo useDelimiter(String) ademas de que puede leer directamente valores Integer, Double u otros usando los metodos nextInt(), nextDouble(),etc…; esto no lo tiene BufferedReader. Asi que depende de tu programa utiliza uno u otro pensando en las ventajas y desventajas de cada una. mas informacion de clase Scanner en http://acercadejava.blogspot.com/2009/04/la-clase-scanner-de-java-5.html. Espero te haya ayudado

Víctor Cuervo

Santiago Henao Toro

Necesito saber cual es la diferencia entre el Buffer y el Scanner.

Víctor Cuervo

Manuel Calle

bueno te cuento q soy nuevo en esto de java y estoy buscando como hacer un archivo plano pero no he podido encontrar una informacion q a mi nivel pueda entender si me pudieras explicar mejor lo que explicaste antes te agadeceria mucho yo uso eclipse para hacer los programas

correo: [email protected]

Víctor Cuervo

lineadecodigo

@jordi,

Muchas gracias por el aviso. Ya está solucionado.

Víctor Cuervo

Jordi

El enlace para descargar el código fuente no funciona.
Gracias.

Víctor Cuervo

Fernando

cual es la diferencia entre usar este metodo para leer Strings desde consola a usar un objeto de la clase Scanner??, cual es mejor???. Tengo un codigo en el cual utilizo scanner para leer datos desde pantalla, pero parece que me trae problemas porque el programa se cuelga a veces sin razon justo cuando esta leyendo datos.
Quisiera saber cuál es mejor.

Víctor Cuervo

Ric

Sencillo pero bueno para empezar

¿Algo que nos quieras comentar?

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

*