Cuando nos estamos iniciando en el mundo de la programación Java es muy común construir aplicaciones Java de consola (programas que corren en una ventana terminal o en un prompt de MS-DOS) y nos vemos en la necesidad de ingresar de alguna manera datos a nuestro programa. Una alternativa es el paso de parámetros (la razón del porqué el método main recibe un arreglo de tipo String), pero si queremos cambiar un dato de ingreso necesitamos volver a ejecutar el programa. Otra solución es utilizar un código como este:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = “”;
while (str != null)
{System.out.print(“ingreso > “);
str = in.readLine();}
Pero resulta algo tedioso de memorizar.Tomando en cuenta lo anterior la gente de Sun ha creado una nueva clase, que permite con un par de líneas realizar la misma tarea. Veamos el siguiente ejemplo:
Scanner entrada = new Scanner(System.in);
System.out.print(“Ingrese un valor: “);
num = entrada.nextInt();
Utilizando la clase Scanner es posible leer los datos ingresados por el usuario desde teclado, para ello debemos utilizar el objeto de entrada por defecto(System.in). El método nextInt() toma lo digitado por el usuario y lo convierte en un número entero (existen varios métodos next… para cada tipo de dato primitivo de Java y para algunos tipos de datos compuestos, como cadena de caracteres).También para la salida de datos, con formato, existe un nuevo método printf. Éste método permite entre otras cosas:
- Redondeo de los decimales de un número.
- Alineación de números en columnas
- Justificación izquierda y derecha
- Representación de números en formato exponencial.
- Mostrar fecha y hora en varios formatos.
El método printf recibe como parámetros el formato y los valores que presentará. Veamos un ejemplo:
System.out.printf(“%d%s\n”, num, ” es primo”);
%d se utiliza para números enteros, mientras %s para cadena de caracteres (String). Esta primera parte se conoce como el formato para mayores detalles vea aquí. Los otros 2 argumentos son los valores que se mostrarán el primero es una variable tipo int y el segundo un String. Pueden encontrar una mayor referencia en el libro Java How to program, sixt Edition de Dietel&Dietel.
El código completo lo pueden descargar desde aquí.


quiero saber como hacer el codigo de una base de datos en java Jframe con conecion con mysql
Por: Jose Andres el agosto 11, 2008
a las 3:03 pm
Hola José Andrés,
Muy general tú pregunta sé un poco más concreto, ¿qué necesitas? ¿Qué tipo de aplicación estás desarrollando?
Si revisas http://cafelojano.wordpress.com/2007/07/30/liberando-codigo-framework-para-trabajar-con-base-de-datos-y-swing/ puedes encontrar algo.
Espero tus respuestas.
Por: Jorge López (jorgaf) el agosto 11, 2008
a las 4:38 pm
Gracias, esta bueno y simple tu articulo. Me fue de mucha utilidad
Por: CrazyKnight el septiembre 2, 2008
a las 8:44 pm
Hola,
Yo estoy iniciando me en java y utilizo BufferedReader para ingresar datos por teclado con Jdeveloper pero por alguna razon que desconosco cuando dijito el valor y le doy enter este no ingresa al programa.
me pueden ayudar?, algo en la configuracion talvez del software.
Muchas gracias
Por: Hernando el octubre 1, 2008
a las 6:15 pm
Hola Hermando,
Nunca me gustó eso del BufferReader, no sé porque pero prefería utilizar parámetros y la nueva clase Scanner.
Te propongo que depures tú programa, para eliminar cualquier tema de una mala implementación. Trata de probar el mismo código en un IDE diferente para así determinar si se trata de alguna configuración del JDeveloper o es algo con el código.
Trataré, no lo prometo, de hacer algo así
Saludos!
Por: Jorge López (jorgaf) el octubre 1, 2008
a las 6:26 pm
Hola.
Como muchos, recien me inicio en java y quisiera saber como puedo leer desde comando algun dato del tipo Date mediante la clase Scanner.
Ejm:
System.out.println(“Ingrese fecha de nacimiento”);
fecha_nacimiento=c.next(); this.setFecha_nacimiento(fecha_nacimiento);
Es decir, con el next() y sus variantes puedo leer datos primitivos. Pero como podria hacer para leer un dato tipo Date.
Gracias x su tiempo.
Por: Walter el octubre 7, 2008
a las 8:25 pm
Hola Walter,
No existe un método directo que te permita realizar la lectura de un tipo de dato Date, en su lugar deberías leer un String con el método next y luego usar SimpleDateFormat para transformar el String a Date. Revisa el siguiente post que explica cómo se transforma String a Date http://cafelojano.wordpress.com/2007/11/21/transformando-string-a-date-uso-de-simpledateformat/
Saludos
Por: Jorge López (jorgaf) el octubre 8, 2008
a las 8:40 am
Me sirvió mucho la respuesta que diste sobre nextInt. Gracias
Por: Catalina el octubre 19, 2008
a las 3:58 pm
Hey Hola Jorge
Una preguntaEstuve empezando a ver Java en la Facu. ahora bien en la misma usamos Eclipse o el bloque de Notas, hasta el momento todo bien.
Pero se me dio la idea de cureosear con Netbeans.
Ingrese un codigo simple que me funciona normalmente en Eclipse, en alguna parte del codigo este pide datos al usario y lo hago usando el Scanner in=new Scanner bla bla bla y despues System.out. bla bla y luego dato=in.next etc etc para que ingrese datos supongamos ingresa tu nombre. Ahora en Eclipse no hay problema ingreso mi nombre en la consola le doy enter y continuo ingresando mas datos y viendo el programa ejecutandose con normalidad, pero en Netbeans despues del enter no pasa nada deberia leer el dato ingresado y continuar con el run pero ahi se queda algo parecido a lo que le pasa a Hernando con JDeveloper y lo mismo me pasa con Jbuilder, Intellij, pero en Eclipse todo Ok, ahora lo unico que se me ocurre es que despues de ingresar el dato quizas deberia tipear otra cosa en vez del enter, pero en realidad no lose, espero que me quites esta duda, de antemano muchas gracias.
Por: Fernando el noviembre 9, 2008
a las 10:32 pm
Muchas gracias, me sirvio bastante
Por: Mario Perez el noviembre 12, 2008
a las 1:25 pm
broder apoyeme por si acaso me puede pasar un programita sencillo donde se ingrese datos por teclado con ese metodo scanner modo consola en java especificamente programo en Sun One q recien lo toy viendo en la U
Se lo agradeceria mucho mucho
Carlos
Guayaquil – Ecuador
Por: Carlos el septiembre 29, 2009
a las 3:44 pm
Hola Carlos,
El código fuente lo puedes descargar desde https://www.box.net/shared/j6nxwnurks (en la parte derecha del sitio existe un widget de Box.net). Es un proyecto de NetBeans, por lo que necesitarás dicho IDE para abrirlo, o puedes buscar la carpeta src y ver el código fuente.
Saludos
Por: Jorge López (jorgaf) el septiembre 29, 2009
a las 6:17 pm
Muchas gracias amigo!!!! El código me sirvió en Jgrasp. Crees que me sirva en Eclipse sin problema???
Por: David Román el octubre 12, 2009
a las 5:40 pm
Hola David Román,
La implementación es independiente del IDE porque ha sido programa con características 100% nativas de Java, así que no deberían haber problemas.
Saludos
Por: Jorge López (jorgaf) el octubre 12, 2009
a las 7:02 pm
Muchas gracias pana!!!!!! Tu blog está súper chévere!!!!!!!
Por: David Román el octubre 12, 2009
a las 8:10 pm
hola k tal disculpa ,kisiera hacerte una consulta,para ingresar datos desde el teclado yo utilizo import java.io.*; pero cuando termino todo
me dicen k coloke el numero deseado de ahi le doy enter y cuando kiero colocar el segundo valor , todas las preguntas k me dicen k coloke los n valores mas se juntan, sabes por k pasa eso !!!
Por: Salvador el octubre 13, 2009
a las 12:10 am
Hola Salvador,
Mi recomendación es que uses la clase Scanner ya que es más sencilla y fácil de trabajar. Y tendría que revisar tu código para poder tener una idea de lo que está pasando. Si puedes publica tú código
Saludos.
Por: Jorge López (jorgaf) el octubre 13, 2009
a las 12:26 am
import java.io.*;
/**
*
* @author Renzo
*/
public class categoria {
/**
* @param args the command line arguments
*/
public static void main(String args[]) throws IOException{
int categoria,colegio;
int pensionmensual,descuento=0,importepagar;
System.out.print(“Teclee la categoria:”);
categoria=System.in.read();
System.out.print(“Teclee el colegio:”);
colegio=System.in.read();
System.out.print(“Teclee la pension mensual:”);
pensionmensual=System.in.read();
switch(categoria)
{
case’A':
switch (colegio)
{ case’N':
descuento=(int) (pensionmensual * 0.3);
break;
case’P':
descuento=(int) (pensionmensual * 0.15);
break;
}
case’B':
switch(colegio)
{ case’N':
descuento=(int) (pensionmensual * 0.4);
break;
case’P':
descuento=(int) (pensionmensual * 0.2);
break;
}
case’C':
switch(colegio)
{ case’N':
descuento=(int) (pensionmensual * 0.5);
break;
case’P':
descuento=(int) (pensionmensual * 0.25);
break;
}
}
System.in.skip(1);
importepagar=pensionmensual-descuento;
System.out.println(“El importe a pagar es..:”+importepagar);
}
}
Ahi esta ycomo utilizaria el Scanner.!!
Por: Salvador el octubre 13, 2009
a las 1:21 am
Hola Salvador,
Te explico el uso de Scanner, primero deberías reemplazar las variables categoria y colegio de tipo de dato int por char, porque más abajo usas sentencias Switch que compara caracteres (case ‘C’ por ejemplo) y un int es diferente de un char. Luego debes crear una instancia de la clase Scanner, antes de ello debes hacer el siguiente import java.util.Scanner;, algo así: Scanner lector = new Scanner(System.in);
Luego deberías reemplazar las lecturas de colegio y categoría de System.in.read() por lector.next().charAt(0); Recuerda cambiar las variables categoria y colegio de int a char. El método charAt(0) te permite obtener el primer caracter que forma el texto (String) que estás leyendo, ya que el método next() lee un String, entonces para procesarlo debes usar el método charAt
Y para pensión manual deberías usar lector.nextInt(); que te permite leer un valor tipo int
Por lo demás el código debería ser el mismo.
Saludos y espero que te ayude.
Por: Jorge López (jorgaf) el octubre 13, 2009
a las 2:18 am
Hola k tal hize lo k dijiste,compila pero solo toma el caso C por k??
import java.util.Scanner;
/**
*
* @author Renzo
*/
public class categoria {
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
Scanner lector=new Scanner(System.in);
char categoria,colegio;
final double PDNA = 0.30; // Descuento Colegio Nacional, Categoría A
final double PDNB = 0.40; // Descuento Colegio Nacional, Categoría B
final double PDNC = 0.50; // Descuento Colegio Nacional, Categoría C
final double PDPA = 0.15; // Descuento Colegio Particular, Categoría A
final double PDPB = 0.20; // Descuento Colegio Particular, Categoría B
final double PDPC = 0.25; // Descuento Colegio Particular, Categoría C
int pensionmensual,descuento=0,importepagar;
System.out.print(“Teclee la categoria:”);
categoria=lector.next().charAt(0);
System.out.print(“Teclee el colegio:”);
colegio=lector.next().charAt(0);
System.out.print(“Teclee la pension mensual:”);
pensionmensual=lector.nextInt();
switch(categoria)
{
case’A':
switch (colegio)
{ case’N':
descuento=(int) (pensionmensual*PDNA);
break;
case’P':
descuento=(int) (pensionmensual *PDPA);
break;
}
case’B':
switch(colegio)
{ case’N':
descuento=(int) (pensionmensual * PDNB);
break;
case’P':
descuento=(int) (pensionmensual * PDPB);
break;
}
case’C':
switch(colegio)
{ case’N':
descuento=(int) (pensionmensual * PDNC);
break;
case’P':
descuento=(int) (pensionmensual * PDPC);
break;
}
break;
}
importepagar=pensionmensual-descuento;
System.out.println(“El importe a pagar es..:”+importepagar);
k ESta mal en el codigo !!
Por: Salvador el octubre 13, 2009
a las 11:09 am
Hola Salvador,
Haz olvidado ubicar las sentencias break dentro de los casos A, B y C; por tal motivo únicamente te toma la ultima alternativa, deberías tener algo así en A, B y C:
case’A’:
switch (colegio)
{
case’N’:
descuento=(int) (pensionmensual*PDNA);
break;
case’P’:
descuento=(int) (pensionmensual *PDPA);
break;
}//fin switch(colegio)
break; //break del case ‘A’
Saludos
Por: Jorge López (jorgaf) el octubre 13, 2009
a las 11:13 am
Ya encontre el error me faltaba el break en A y B de toda manera muchas gracias brother!! ,
Saludos
Por: Salvador el octubre 13, 2009
a las 11:26 am
hola k tal ,una ?,como hago para ordenar una matriz en filas y columnas en metodos propios , elegidos a la random,eh hecho todo pero,la matriz sale en forma vertical ..??
Por: Salvador el noviembre 8, 2009
a las 5:08 pm
Hola.
No tengo ni la menor idea de comorealizar un programa en Java, que abra o cree unarchivo y leea el contenido del archivo, asi mismo contabilizando el nuemro de caracteres o palabras que este contenido en el archivo, tambien que brinde un menu en donde indique que desea realiar el usuario en donde indique si desea comprimir archivo o descomprimir archivo.
Si no es mucha molestia, les agradeceria que me ayudaran en esto porfabor.
Gracias por tu amable atencion
Por: Maria el noviembre 20, 2009
a las 12:22 am
Muy buenas,
soy un estudiante de telecos que esta realizando su proyecto final de carrera, dessarroyo de una aplicacion Android cn java, y me gustaria saber si sabeis de algun sitio donde pueda encontrar codigo en java, para leer codigos QR.
Os estaria muy agradecido! Muchas gracias!!
Por: Dani_Sanchez el febrero 17, 2011
a las 7:06 am
hola colega bueno como se aria si es una simulacion de un ingreso de a una universidad
Por: Gustavo el noviembre 10, 2011
a las 1:57 am
HOLA ESTOY ESTUDIANDO EN TECNOLOGICO Y PROGRAMO EN JAVA PERO HAY UN METODO QUE UTILIZA MI ASESOR QUE EN leer PERO NO ME CORRE EN EL PROGRAMA ME MARCA ERROR
Por: veneno 999 el abril 5, 2012
a las 11:19 pm
la ayuda es increíble gracias por su ayuda
Por: jhony benitez el enero 2, 2013
a las 6:24 pm
hola q tal me podrian ayudar con informacion estoy iniciando en java y tengo que abrir desde modo consola alguno de 5 jframe qie contendra una imagen con pase de parametros, ademas ensequida del paso de parametrs le tengo que poner el tiempo que quiera q se abra la imagen seleccionada ,y todo desde la consola
Por: lulu el febrero 17, 2013
a las 1:18 am