我正在编写这个程序,但不明白为什么循环不会退出并输出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/