我正在为我的AP Comp Sci类编写这个作业,其中我需要编写一个程序(使用Eclipse)来询问用户他们购买的商品数量,并且我需要使用do-while循环创建代码。每一次循环都必须与不同的项目相关。对于这些项目中的每一个,用户都需要输入成本。然后,我需要打印所有项目的总成本和9%的销售税后的总成本,并打印结果。
我试过这样做,但是我不能正确地打印出总数,如果我去掉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);
}发布于 2016-11-14 06:01:27
您的实现
您的代码中有三个错误:
automatically).循环中的
x++缺失do-while循环之外声明cost,并且应该对cost += kbReader.nextDouble();循环中的单项目成本求和(cost += kbReader.nextDouble();)。for循环(当D14达到目标数字时,它将中断for此外,不要忘记在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);发布于 2016-11-14 06:01:45
你的代码有一些问题。第一个问题是,它将在两个循环只运行一次后跳出。
while (true)通常不是一个好主意。我建议您询问do while循环上面有多少项,并将计数器设置为0。在while循环体中将计数器递增1,然后在while语句中测试它:
int count = 0;
do {
<code body>
count++;
} while (count < num);此外,您正在尝试访问一个驻留在while循环范围内的total变量,而该变量位于while循环作用域之外。它不允许你编译。在while循环之上初始化它,并在循环内递增它(例如total += cost;)。您可以完全摆脱for循环。
试一试吧!
https://stackoverflow.com/questions/40579222
复制相似问题