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

DJM*_*JM4 2 java for-loop if-statement

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

  • "Yes" 然后它要求客户账单.
  • "No" 然后我将总计账单(我还没有为此编写代码,所以忽略那部分).

我遇到的问题是在我输入初始账单金额之后,代码询问是否应该有另一个客户,但是过早地询问他们的账单金额,然后询问是否有另一个客户第二次?

我的主要问题是,我的结构错了吗?我怎么能让循环不输出两次和/或过早的东西?

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.");
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*nes 6

for(int c = 0; c > -1; c++) 
Run Code Online (Sandbox Code Playgroud)

这个循环将(基本上)永远运行,因为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();    
}  
Run Code Online (Sandbox Code Playgroud)

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

在此之后,while循环是您想要总计金额的时间.此外,在while循环中,您可能希望有一个变量来保持总量.就像是:

total += bill0; 
Run Code Online (Sandbox Code Playgroud)

行后:

double bill0 = input.nextDouble(); 
Run Code Online (Sandbox Code Playgroud)

可能会做的伎俩.