Java omitiendo Console.nextLine()
Estoy creando un programa simple en Java, en el cual le pido al usuario lo siguiente:
- initialBalance, double
- rate, integer
- client, String
Tengo un problema: las dos primeras entradas funcionan, pero no puedo hacer que la tercera funcione, el programa parece omitirla.
Este es el código:
import java.util.Scanner;
public class DoublingTime{
public static void main(String[] args){
Scanner console = new Scanner(System.in);
System.out.print("Suma inicial: ");
final double initialBalance = console.nextDouble();
System.out.print("Tasa de interés: ");
final int rate = console.nextInt();
System.out.print("Nombre del cliente: ");
final String client = console.nextLine();
double balance = initialBalance;
int year = 0;
while(balance < 2 * initialBalance){
balance = balance + balance * rate / 100;
year++;
}
System.out.println("Se necesitan " + year + " años para duplicar la inversión de " + client + " (con una tasa de interés de " + rate + "%).");
console.close();
}
}
Y esto es lo que obtengo en mi GUI:
Suma inicial: 10000
Tasa de interés: 1
Nombre del cliente: Se necesitan 70 años para duplicar la inversión de (con una tasa de interés de 1%).
¿Qué estoy haciendo mal?
davy.ai
El problema está en el uso del método
nextLine()
después denextInt()
. CuandonextInt()
lee el entero y el usuario presiona la tecla Enter, el escáner lee el entero pero deja el carácter de nueva línea (generado al presionar la tecla Enter) en el flujo de entrada. La próxima vez que se llame anextLine()
, este lee este carácter de nueva línea y termina la línea de entrada. Para solucionar esto, puedes agregar una llamada adicional anextLine()
después denextInt()
para consumir el carácter de nueva línea o usar el métodonext()
para leer la entrada de tipo String.Solución de ejemplo usando
next()
: