
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"));
Frnaklin Herrera
Buena explicación.
Víctor Cuervo
Gracias Franklin. Nos alegra que te haya gustado.
Saludos.
edgar
hola podrian ayudarme
como sumo dos numeros en eclipse y cual es el codigo porfavor si
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
@Andre, me alegra mucho que te haya servido. :-D
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
@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
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»));
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
Gooll
¿¿¿como ingresar datos
y o recibir valores si clases????
sin buffereader
sin stringreader
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
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!!
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");
}
}
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
Santiago Henao Toro
Necesito saber cual es la diferencia entre el Buffer y el Scanner.
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]
lineadecodigo
@jordi,
Muchas gracias por el aviso. Ya está solucionado.
Jordi
El enlace para descargar el código fuente no funciona.
Gracias.
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.
Ric
Sencillo pero bueno para empezar