gpt4 book ai didi

java - 为什么当我在“你想订购多少”下有 "valid = true;"时,在 Debug模式下代码可以工作,但运行却不能?

转载 作者:行者123 更新时间:2023-12-02 03:29:39 25 4
gpt4 key购买 nike

但是如果我把它设置为“valid = false;”它在调试或运行时不起作用。

事实上,即使运行代码,我也无法在“你想订购其他东西吗?”之后输入任何内容,无论它处于 Debug模式还是运行模式。

我错过了什么吗?在询问“您想订购多少”并输入一个数字后,它应该询问“您想订购其他东西吗”,这是确实的,但我无法输入并跳出 do while 循环。到目前为止,其他一切都在进行中。

do {


boolean itemValid = true;
while (itemValid) {

System.out.println("Please enter an item name: ");

String enterItem = scnr.nextLine();


if (keepTrack.containsKey(enterItem)) {

System.out.println(keepTrack.get(enterItem));
itemValid = false;

} else {
System.out.println("Sorry we don't exist.");
continue;

}


System.out.println("How many do you want to order?");
int enterQuan = scnr.nextInt();
yourOrder = enterQuan;
valid = false;

}

System.out.println("Do you want to order anything else?");
String yesNo = scnr.nextLine();

if (yesNo.equalsIgnoreCase("n")) {
valid = false;
} else
break;

} while (valid);

最佳答案

您的代码有两个问题。首先,可能还没有注意到:

 do ...

if (keepTrack.containsKey(enterItem)) {
System.out.println(keepTrack.get(enterItem));
itemValid = false;
} else {
System.out.println("Sorry we don't exist.");
continue;
}

当你的输入“无效”时,你就会进入else分支。 else 分支继续循环。循环取决于。因此:一旦您以 value=true 开始,然后输入无效,您就会陷入永无休止的循环。因为循环开始和 continue 语句之间的任何内容都不会改变结束循环的条件。

您的实际问题:当您调用 int EnterQuan = scnr.nextInt() 时,它不会消耗您在控制台上键入的“ENTER”。请参阅here了解详情。

还有另一个问题:

if (yesNo.equalsIgnoreCase("n")) { 有效=假; } 别的 休息; }

当用户输入 nN 时,您会进入 valid=false ,从而结束外部 do-while 循环。因此:当用户输入其他内容时,将采用else路径。在 else 路径中可以找到什么? 休息。这结束了do-while循环。

换句话说:您的代码完全按照您的指示执行:以一种或另一种方式结束 do-while 循环。

真正的答案是:您需要更加小心代码中的内容。每个角色都很重要。当您将某些内容放入代码中进行实验时:请记住它就在那里,并且具有效果。

关于java - 为什么当我在“你想订购多少”下有 "valid = true;"时,在 Debug模式下代码可以工作,但运行却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56892869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com