程序不等待询问用户输入

时间:2016-04-07 05:43:37

标签: java input

我遇到的问题是我的程序正在跳过用户输入的提示。相关代码如下:

System.out.format("Purchase price is $" + "%.2f%n", sum);
    System.out.println("Proceed to payment? (y/n) ");
    String proceed = keyboard.nextLine();

    while(!proceed.equals("n") && (!proceed.equals("y"))) {
        System.out.println("Invalid response. Try again."); 
        System.out.println("Proceed to payment? (y/n) ");
        proceed = keyboard.nextLine();

    if (proceed.equals("n")) {
        System.out.println("Come back next time, " + name + ".");
        System.exit(0);
    }
    else if (proceed.equals("y")) {`

输出应暂停在:

购买价格为$ x.00

继续付款? (Y / N)

但输出:

购买价格为$ x.00

继续付款? (Y / N)

响应无效。再试一次。

继续付款? (Y / N)

有人能告诉我为什么忽略了第一个扫描仪提示?

编辑:代码是孤立的,问题出在程序内部的其他地方。当我弄清楚时,我会报告回来。

1 个答案:

答案 0 :(得分:3)

while循环条件中的这个逻辑是错误的

while(!proceed.equals("n") && (!proceed.equals("y"))) {

必须是

while(!proceed.equals("n") || (!proceed.equals("y"))) {

如果你想保持你的逻辑与AND条件然后移出付款,以便可以工作

实施例

while (!proceed.equalsIgnoreCase("n") && (!proceed.equalsIgnoreCase("y"))) {
    System.out.println("Invalid response. Try again....");
    proceed = keyboard.nextLine();
}
if (proceed.equalsIgnoreCase("n")) {
    System.out.println("Come back next time, " + name + ".");
    System.exit(0);

} else if (proceed.equalsIgnoreCase("y")) {
    System.out.println("now we are going to pay, " + name + "." + sum);
    System.exit(0);
}