gpt4 book ai didi

java - 为什么我的 Java for/if/else 语句输出重复项

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

我正在练习在 Java 中使用循环,并且我创建了这个 if/else 循环来不断询问是否有另一个客户,如果用户输入是

  • "is" 然后它会要求客户开具账单。
  • “否” 然后我将计算总帐(我还没有为此编写代码,所以请忽略该部分)。

我遇到的问题是,在我输入初始账单金额后,代码询问是否有其他客户,但过早地询问他们的账单金额,然后再次询问是否有其他客户?

我的主要问题是,我的结构是否有误?我怎样才能让循环不输出两次和/或过早地输出一些东西?

Scanner input = new Scanner(System.in);
double total;

System.out.println("Please enter your bill amount.");
double bill0 = input.nextDouble();

for(int c = 0; c > -1; c++) {
System.out.println("Is there another customer?");
String customer = input.nextLine();

if (customer.equalsIgnoreCase("Yes")) {
System.out.println("Please enter their bill.");
double bill = input.nextDouble();
} else {
System.out.println("Okay, let's total your bill amount.");
}
}

最佳答案

for(int c = 0; c > -1; c++) 

这个循环将(基本上)永远运行下去,因为 c 总是大于 -1。(实际上这个循环会一直运行直到发生溢出,因为 c 的值太大而无法容纳为该整数分配的可用存储空间。您可以引用此处了解更多信息:http://en.wikipedia.org/wiki/Integer_overflow)

一个更简洁的结构方式是做这样的事情:

String answer = "Yes";
while (answer.equals("Yes"))
{
System.out.println("Please enter your bill amount.");
double bill0 = input.nextDouble();

System.out.println("Is there another customer? (Yes or No)");
answer = input.nextLine();
}

当然,如果用户输入了您不期望的输入,您需要添加错误处理。此外,这更多是伪代码而不是真正的实现。

在此 while 循环之后,您将需要计算总金额。此外,在 while 循环中,您可能希望有一个变量来保持总量。像这样的东西:

total += bill0; 

行后:

double bill0 = input.nextDouble(); 

可能会成功。

关于java - 为什么我的 Java for/if/else 语句输出重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615808/

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