首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写do-while循环?

编写do-while循环?
EN

Stack Overflow用户
提问于 2016-11-14 05:50:28
回答 2查看 66关注 0票数 0

我正在为我的AP Comp Sci类编写这个作业,其中我需要编写一个程序(使用Eclipse)来询问用户他们购买的商品数量,并且我需要使用do-while循环创建代码。每一次循环都必须与不同的项目相关。对于这些项目中的每一个,用户都需要输入成本。然后,我需要打印所有项目的总成本和9%的销售税后的总成本,并打印结果。

我试过这样做,但是我不能正确地打印出总数,如果我去掉for循环,它就不起作用。你能给我一些如何解决这个问题的建议吗?

代码语言:javascript
复制
public static void main(String[] args) {
    Scanner kbReader = new Scanner(System.in);

    System.out.println("You went shopping on Cyber Monday.");

    do {
        System.out.println("How many items did you purchase?");
        int num = kbReader.nextInt();
        for(int x = 0; x < num;) {
            System.out.println("What did you purchase?");
            String item = kbReader.next();
            System.out.println("How much did it cost?");
            double cost = kbReader.nextDouble();
            break;
        }
        break;
    } while(true);

    double total = cost;
    double totalTax = total + (total * 0.09);
    System.out.println("Total: $" + total);
    System.out.println("Total after tax: $" + totalTax);
}
EN

回答 2

Stack Overflow用户

发布于 2016-11-14 06:01:27

您的实现

您的代码中有三个错误:

automatically).循环中的

  1. x++缺失
  2. 您应该在do-while循环之外声明cost,并且应该对cost += kbReader.nextDouble();循环中的单项目成本求和(cost += kbReader.nextDouble();)。
  3. 您不应该中断for循环(当D14达到目标数字时,它将中断for

此外,不要忘记在do-whilekbReader.close();之后关闭扫描仪

这段代码应该可以工作:

代码语言:javascript
复制
 public static void main(String[] args) {
         Scanner kbReader = new Scanner(System.in);

         System.out.println("You went shopping on Cyber Monday.");
         double cost = 0;
         do
         {
         System.out.println("How many items did you purchase?");
         int num = kbReader.nextInt();
         for(int x = 0; x < num;x++)
         {
             System.out.println("What did you purchase?");
             String item = kbReader.next();
             System.out.println("How much did it cost?");
             cost += kbReader.nextDouble();
         }
         break;
         }while(true);
         kbReader.close();
         double total = cost;
         double totalTax = total + (total * 0.09);
         System.out.println("Total: $" + total);
         System.out.println("Total after tax: $" + totalTax);
     }

正确的do-实现

我想向您推荐另一个实现,因为我认为如果您使用do-while,就不应该同时使用for循环。代码如下:

代码语言:javascript
复制
Scanner kbReader = new Scanner(System.in);
System.out.println("You went shopping on Cyber Monday.");
double cost = 0;
int x = 0;
System.out.println("How many items did you purchase?");
int num = kbReader.nextInt();
do
{
  System.out.println("What did you purchase?");
  String item = kbReader.next();
  System.out.println("How much did it cost?");
  cost += kbReader.nextDouble();
  x++;
} while(x<num);
kbReader.close();
double total = cost;
double totalTax = total + (total * 0.09);
System.out.println("Total: $" + total);
System.out.println("Total after tax: $" + totalTax);
票数 0
EN

Stack Overflow用户

发布于 2016-11-14 06:01:45

你的代码有一些问题。第一个问题是,它将在两个循环只运行一次后跳出。

while (true)通常不是一个好主意。我建议您询问do while循环上面有多少项,并将计数器设置为0。在while循环体中将计数器递增1,然后在while语句中测试它:

代码语言:javascript
复制
int count = 0;
do {
   <code body>
   count++;
} while (count < num);

此外,您正在尝试访问一个驻留在while循环范围内的total变量,而该变量位于while循环作用域之外。它不允许你编译。在while循环之上初始化它,并在循环内递增它(例如total += cost;)。您可以完全摆脱for循环。

试一试吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40579222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档