为什么我不能在其他键盘输入后输入键盘字符串输入?

时间:2013-11-20 22:28:04

标签: java input

我正在使用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

当我切换两个输入时,让用户首先输入名称然后输入初始平衡,它完美地运行。为什么是这样?我做错了什么?

2 个答案:

答案 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);