有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java程序不会等待请求用户输入

我遇到了一个问题,我的程序跳过了用户输入提示。相关代码如下:

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美元

继续付款?(是/否)

但实际上:

购买价格为x.00美元

继续付款?(是/否)

无效响应。再试一次

继续付款?(是/否)

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

编辑:代码是独立工作的,问题出在程序的其他地方。等我弄明白了我会回来报到的


共 (1) 个答案

  1. # 1 楼答案

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

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

    一定是

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

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

    例如:

    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);
    }