繁体   English   中英

程序无需等待用户输入

[英]Program doesnt wait to ask for user 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

继续付款? (是/否)

但改为输出:

购买价格为$ x.00

继续付款? (是/否)

无效的回应。 再试一次。

继续付款? (是/否)

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

编辑:代码是隔离工作的,问题出在程序内部的其他地方。 当我弄清楚时,我会报告。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM