如何从循环中添加所有结果

时间:2014-02-08 19:05:50

标签: java loops

回答问题:谢谢大家的帮助!

我在完成代码时遇到了一些麻烦,主要是因为我对编码很新,但是我还在努力。非常感谢任何帮助!

我有3个问题:

  • 我的主要问题是我不明白如何让我的代码添加每个循环中的所有总计。
  • 此外,在循环开始后,当我再次输入'0'时它不会结束,但如果我在第一次运行循环时结束循环它将起作用。
  • 最后,如何以这种格式显示小数总和; xx.xx而不是xx.xxxxxxx?

提前感谢您,我真的很感激任何帮助

import java.util.Scanner;

public class takeOrders {//Find totals and average price 

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int euro; // what country the candy canes are from   
        int us;// what country the candy canes are from
        int holder; //place holder for user input of location    
        int v110 = 0; //110v
        int v240 = 0; //240v
        int sum = 0, i = 1;
        double total = 0;
        double discount = 0;

        do {
            //Prompt what country the order is for
            System.out.println("What country is the order for? (press '0' to see the Net Total of order) ");
            System.out.println("1: Europe\n2: U.S.");
            holder = input.nextInt();
            // 110 or 240 voltage 
            if (holder == 1) {
                //How many boxes are ordered EUROPE
                System.out.println("Input number of 240v boxes needed");
                v240 = input.nextInt();
                total = 2.40 * v240;
                System.out.println("Order total: $" + total);
            } else if (holder == 2) {
                // How many boxes are ordered US
                System.out.println("Input number of 110v boxes needed");
                v110 = input.nextInt();
                total = 2.40 * v110;
            }

            // Discount for U.S.  
            if (holder == 2) {
                if (v110 >= 3)
                    discount = total * .05;
            } else if (v110 >= 10) {
                discount = total * .10;
            }
            if (discount > 0) {
                System.out.println("Order total: $" + total);
                System.out.println("Total with Discount: $" + (total - discount));
            }
        } while ((v240 != 0) || (v110 != 0));

    }
}

3 个答案:

答案 0 :(得分:0)

捕获输入后,您的while条件永远不会成立,因此无限循环。而不是

while ((v240 != 0) || (v110 != 0));

尝试

while (holder != 0);

要么是这样,要么每次重复循环时都需要将v240和v110重置为零。

答案 1 :(得分:0)

使用printf是最简单的方法。

System.out.printf("%.2f", total);

所以对你的情况来说:

System.out.printf("Order total: %.2f", total);

您还可以使用DecimalFormat显示您要打印的数字。

import java.text.DecimalFormat;

        DecimalFormat df = new DecimalFormat("#.##");           
        System.out.println("Order total:  $" + df.format(total)); 

答案 2 :(得分:0)

为了完成循环,我会使用holder而不是v110和v240这样你不需要输入一个国家然后输入订单金额。 问题可能是由于如果您首先选择美国并输入一个值,则此值将保留,直到您再次输入美国另一个金额,因此您的循环将结束,除非您选择所有相同的国家/地区,然后选择0作为金额

要累积总数,你应该做

total += 2.40*v240;

total=total+(2.40*v240);

这样每个循环的总量就会增加

为了格式化输出,您可以使用此代码片段:

 DecimalFormat df = new DecimalFormat("#.##");
 System.out.print(df.format(total));

我希望这可以帮助您熟悉编程和Java。