gpt4 book ai didi

java - 我在 Java 中的 do while 循环有什么问题

转载 作者:行者123 更新时间:2023-12-01 17:06:43 24 4
gpt4 key购买 nike

我正在编写这个程序,但不明白为什么循环不会退出并输出System.out.print()。有人可以看一下并告诉我发生了什么吗?

public class SalesTax 
{

public static void main(String[] args)
{
// Input items for shopping cart
HashMap<String, Double> cart = new HashMap<String, Double>();

// Create a Scanner
Scanner input = new Scanner(System.in).useLocale(Locale.US);

//variables
String item;
double price;
boolean done = false;
String ans;
do
{
System.out.print("Enter the item then select enter followed by the price and enter.");
item = input.nextLine();
price = input.nextDouble();
cart.put(item, price);
System.out.print("If done type done if not continue with adding to cart.");
ans = input.nextLine();

if(ans.equals("Done"))
done = true;
else
item = input.nextLine();
price = input.nextDouble();
cart.put(item, price);
System.out.print("If done type done if not continue with adding to cart.");
} while( !done);

System.out.print("Yo");
}
}

最佳答案

问题在于 else block 周围缺少大括号:尽管您已正确缩进该 block ,但缩进并不重要:只有第一行

item = input.nextLine();

被认为是else的一部分;其余的无条件执行。

请注意,只有一处将 done 设置为 true,您可以替换 do/while 循环使用“永远”循环,并使用 break 在中间退出循环:

while (true) {
...
if (ans.equals("Done")) {
break;
}
...
}

这使得声明 done 变量变得不必要。

关于java - 我在 Java 中的 do while 循环有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248840/

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