我正在使用Blue Pelican Java书和Eclipse学习Java。我正在尝试编写一个简单的银行帐户程序,它接受用户输入的初始余额和帐户名称,然后我遇到了一个奇怪的问题(我之前遇到过这个问题,但最后决定问一下):我永远不会在另一次输入后获取字符串输入。
见这里:
//Get initial balance
System.out.print("How much money do you want to open your account with? ");
double accBalance = kbIn.nextDouble();
//Get account name
System.out.print("Who will this account belong to? ");
String accName = kbIn.nextLine();
//Create bank account
BankAccount myAccount = new BankAccount(accBalance, accName);
当我按顺序输入两个输入时,程序会接受我的余额输入,但会立即跳过名称输入。在程序结束时,没有输出任何名称,例如The account balance is $1405.22
而不是The John Doe account balance is $1405.22
当我切换两个输入时,让用户首先输入名称然后输入初始平衡,它完美地运行。为什么是这样?我做错了什么?
答案 0 :(得分:2)
nextDouble()不会前进到nextLine()所在的下一行。在两种情况下都使用nextLine()并将字符串转换为double。 像这样的东西。
Double.parseDouble(kbIn.nextLine());
答案 1 :(得分:0)
执行kbIn.nextDouble()
后,程序将输入作为kbIn.nextLine()
,因为kbIn.nextDouble()
只接受双倍。要解决此问题,您可以执行
//Get initial balance
System.out.print("How much money do you want to open your account with? ");
double accBalance = kbIn.nextDouble();
kbIn.nextLine();
//Get account name
System.out.print("Who will this account belong to? ");
String accName = kbIn.nextLine();
//Create bank account
BankAccount myAccount = new BankAccount(accBalance, accName);