2016-11-13 116 views
0

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

我试过这样做,但无法正确打印总数,如果我取出for循环,它不起作用。你能给我一些关于如何解决它的指针吗?

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); 
} 
+1

欢迎来到Stack Overflow!它看起来像你需要学习使用调试器。请帮助你一些[补充调试技术](https:// ericlippert。COM/2014/03/05 /如何调试的小程序/)。如果您之后仍然有问题,请随时返回更多详情。 –

回答

0

你实现

有三个错误在代码:

  1. x++在for循环失踪

  2. 你应该申报cost ouside的do-while环你应该总结(cost += kbReader.nextDouble();)单个项目的费用在for循环中。

  3. 您不应该打破for循环(当x达到目标数字时它会自动中断)。

而且不要忘了do-while后关闭扫描仪:kbReader.close();

此代码应工作:

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循环。 这是代码:

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

您的代码有几个问题。第一个问题是,它们只能运行一次后会突破两个循环。

while (true)通常不是一个好主意。我建议你问他有多少项目,而循环的上面做的,并通过一个while循环体内设置一个计数器为0递增计数器,然后在while语句测试它是这样:

int count = 0; 
do { 
    <code body> 
    count++; 
} while (count < num); 

此外,你试图访问一个总是在while循环范围内的变量。它不会让你编译。在while循环之上初始化它,并在循环内部增加它(例如total += cost;)。你可以完全摆脱for循环。

试试看!