Leer números por teclado con Java

23/Oct/2016 Java , , , 14 Comentarios
Programación en Java

Un ejemplo sencillo, pero muy útil y que todos deberíamos de controlar es el de Leer números por teclado con Java. La idea en este caso es ver cómo podemos pedir al usuario números enteros e irlos leyendo por teclado. Esto lo repetiremos hasta que el usuario inserte el 0. A partir de este momento le mostraremos al usuario la suma de todos los números insertados.

Además deberemos de controlar que lo que el usuario realmente inserta es un número entero y no, por ejemplo, una letra.

Lo primero que tenemos que conocer es que la clase Scanner nos permite leer contenido insertado por consola de una forma sencilla. Lo que tenemos que hacer es crear un Scanner sobre el elemento de consola que es el System.in.

Scanner reader = new Scanner(System.in);

A partir de ese momento cada vez que queramos que el usuario nos de una entrada por teclado, en nuestro caso un número deberemos de llamar al método .nextInt()

int numero = 0;
numero = reader.nextInt();

Vemos que el contenido lo dejamos directamente sobre una variable de tipo int.

Si lo que queremos es capturar números hasta que se inserte el 0 podemos utilizar un bucle do-while.

List lista = new ArrayList();
Scanner reader = new Scanner(System.in);
int numero = 0;

System.out.println("Introduce números. El cero para salir");

do {			
    numero = reader.nextInt();
    lista.add(numero);
} while (numero!=0);

Vemos que en cada iteración del bucle estamos insertando el número en una lista definida mediante un ArrayList.

Con este código hay que tener cuidado, ya que el usuario podría insertar una letra. Es por ello que debemos de capturar el contenido dentro de una estructura try-catch que controle la excepción InputMismatchException

List lista = new ArrayList();
Scanner reader = new Scanner(System.in);
int numero = 0;

System.out.println("Introduce números. El cero para salir");

do {			
  try {
    numero = reader.nextInt();
    lista.add(numero);
  } catch (InputMismatchException ime){
    System.out.println("¡Cuidado! Solo puedes insertar números. ");
    reader.next();
  }
} while (numero!=0);

Si nos fijamos bien cuando controlamos la excepción además de avisar al usuario lo que hacemos es llamar al método .next() del Scanner esto es ya que el carácter introducido por teclado sigue sin ser leído y hay que descartarlo para que pueda ser insertado otro número.

Ya solo nos quedará sumar los números que hemos insertado en la lista.

int suma = 0;
for(int num:lista) {
  suma += num;
}
		
System.out.println("La suma de los números es " + suma);

Espero que os haya servido de utilidad este ejemplo para leer números por teclado con Java.

Vídeos sobre Java


14 comentarios en “Leer números por teclado con Java”

Víctor Cuervo

mikel

Escribir un programa en Java SolucionPracticaCapicua.java que pida un número por teclado
entre 10.000 y 99.999, en caso de no ser un número entero, se debe arrojar una excepción
(leer desde teclado con el método nextInt() de la clase java.util.Scanner). Mostrar el número
con las cifras al revés. Por ejemplo, si el número introducido es 12345, se debe mostrar 54321.
Si el número introducido es par, sumarle uno y sólo si también el resultado es mayor que
50.000 mostrar «true», en caso contrario, mostrar «false». En ambos casos mostrar el resultado
de haberle sumado 1. Si el número introducido es impar, mostrar el número introducido
inicialmente.
Finalmente, mostrar si el número introducido originalmente es capicúa mostrando «Capicúa:
true» o si no lo es, mostrando «Capicúa: false».
Alguien me podría ayudar a resolver este problema?
Gracias por adelantado

Víctor Cuervo

Isma Cuello Hernandez

Quien me puede ayudar con este ejercicio
Realize un programa que obtenga 100 numeros los sumes,los multiplique y el promedio

Víctor Cuervo

Andrés Alarcón

¿No es muy complicado la entrada de datos por teclado en Java ? Es que si lo comparas con lenguajes como C++ o Python se me hace muy engorroso estar declarando Scanner, luego una variable que capture la entrada, y luego poner next y el tipo de dato, se me hace que lo complicaron mucho y muy suceptible errores de sintaxi, en C++ para capturar un datos es solo poner la librería iostream y poner cin>>variable y listo, nada de declarar Scanner, ni variables de lectura, ni lineas complicada next y tener que declarar tipo de dato es el que se va a capturar, si es caracter o entero o flotanto o double. ¿Toda es parafernalia que pide Java para ingresar un dato tienen alguna ventaje frente a una simple linea de código que se necesita en otros lenguajes para capturar datos?

Víctor Cuervo

juan

¿como seria para un String?
intente cambiandole algunas cosas pero solo me deja introducir dos frases y se caba el porgrama sin oprimir el cero

Víctor Cuervo

Víctor Cuervo

Buenas Juan,

Para leer cadenas tienes el ejemplo en http://lineadecodigo.com/java/lectura-de-datos-en-java-con-scanner/
Espero que te sea de ayuda.

Saludos.

Víctor Cuervo

fran

entonces!
si quiero que el bucle se repita hasta que introduzcas un número y se almacene en una variable??
seería asi;????

int numero1;
int numero1 = reader.nextInt();
do {
System.out.print(«Introduce el primer número: «);
numero1 = Integer.parseInt(br.readLine());
String numero1intro = br.readLine();
}while(numero1 !=0);

Víctor Cuervo

Víctor Cuervo

Ya lo tienes almacenado en numero1. Si ejecutas readLine() dos veces realizará dos lecturas.

Saludos.

Víctor Cuervo

Carlos Betancur Restrepo

Buenos días, soy nuevo en el tema y estoy anclado en un ejercicio muy simple como es imprimir los numeros de 1 a 100, pero que no imprima los que contengan el número 0, no encuentro información por ninguna parte me pueden ayudar como po dris esta condición en el programa para Java

Víctor Cuervo

Víctor Cuervo

Buenas,

Simplemente tienes que hacer un bucle y eliminar aquellos cuyo resto al dividirlo por 10 (los que contienen 0) sea 0.
Algo así:

for (int x=1;x<=100;x++) {			
  if (x%10 != 0)				
    System.out.println(x);
}

Espero que te sirva.

Saludos

Víctor Cuervo

Malva

Buenas! Hace prácticamente NADA empecé a tener clases sobre programación. La cuestión es que tengo un ejercicio que debe ser supe fácil pero por alguna razón me come demadiado la cabeza.

Pedir al usuario un numero entero y si éste no lo es, volver a pedirlo. Y lo misml pero con decimal.

Pensaba escribir que por ejemplo el valor de la variable que el usuario introduzca sea !=int (con un ciclo Do While) para que se repita la pregunta, pero claro, Java no me lo permite. Supuse que colocando el !=int justamente me tomaria el rango de las variables tipo int.

No sé muy bien cómo podría hacerlo. Alguien me puede dar una idea, orientarme un poco? Se lo agrafeceria mucho. :(

Víctor Cuervo

Víctor Cuervo

Y ahora explicado en http://lineadecodigo.com/java/numeros-que-contengan-un-cero/
Espero que la explicación sea de ayuda. :-)

Víctor Cuervo

Manuel

Quiero implementar la entrada de números a este código :

public class Ordenar {

public static void main(String[] args) {

//array a ordenar
//prueba codigo

//fin prueba codigo
int numeros[]={5,6,2,10,1}; Estos números los quiero con entrada de teclado
System.out.println(«Arreglo sin ordenar: » + Arrays.toString(numeros));
//llamada funcion
ordenacionBurbuja(numeros);

//mostrar el contenido
System.out.println(«***Ordenamiendo BubleShort***»);
for(int i=0;i<numeros.length;i++){
System.out.print(" " +numeros[i] + ", ");

}
System.out.println();
//Parte de Quickshort
//array a ordenar

//llamada funcion
ordenacionQuicksort(numeros, 0, numeros.length-1);

//mostramos el contenido
System.out.println("***Ordenamiendo QuickShort***");
for(int i=0;i<numeros.length;i++){
System.out.print(" " + numeros[i] + ", ");
}

//termina

}

Víctor Cuervo

Favio

Para que compile hay que importar la clase ArrayList

Víctor Cuervo

Víctor Cuervo

Correcto, las clases a importar son:

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;

Puedes ver el código completo del ejemplo en https://github.com/victorcuervo/lineadecodigo_java/blob/master/src/com/lineadecodigo/java/basico/LeerNumerosConsola.java

Saludos.

¿Algo que nos quieras comentar?

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

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.