java跟踪价格和总成本
我试图跟踪每一项的成本,并将其添加到所有项目的总成本中。当我运行程序时,最后一项成本和总成本应用于每个项目。我觉得我应该有另一个循环,更动态地放置每个项目的成本和总成本
驾驶员等级:
public class GroceryListTester
{
public static void main(String[] args)
{
GroceryList get = new GroceryList();
get.start();
}
}
支票邮件类:
import chn.util.*;
import java.util.*;
public class GroceryList
{
//Instance variables
private int myNumItems;
private double myItemCost;
private double myTotalCost;
Scanner keyboard = new Scanner(System.in);
//Constructor
public GroceryList()
{
myNumItems = 0;
myTotalCost = 0;
}
//Methods
public void start()
{
System.out.print('\u000C');
getMyNumItems();
getMyItemPrices();
output();
}
public int getMyNumItems()
{
System.out.print("How many items would you like to purchase? => ");
myNumItems = keyboard.nextInt();
return myNumItems;
}
public double getMyItemPrices()
{
int n = 0; //Disp item number
while(n < myNumItems)
{
System.out.print("Please enter price of item #" +(n+1) +": ");
myItemCost = keyboard.nextDouble();
myTotalCost = myTotalCost + myItemCost;
++n;
}
return myTotalCost;
}
public void output()
{
for(int n = 0; n < myNumItems; ++n)
{
System.out.println();
System.out.printf("%8s %8s %8s", "Item #" +(n + 1) , "Cost: $" +myItemCost, "Total: $" +myTotalCost);
}
}
}
输出:
How many items would you like to purchase? => 3
Please enter price of item #1: 1.25
Please enter price of item #2: 1.75
Please enter price of item #3: 1.50
Item #1 Cost: $1.5 Total: $4.5
Item #2 Cost: $1.5 Total: $4.5
Item #3 Cost: $1.5 Total: $4.5
# 1 楼答案
问题是,除了最后一个项目,您没有存储任何项目的价格参考。这就需要一个ArrayList来跟踪已经订购的每个商品
如果不使用int-myItemCost,而是使用ArrayList<;int>;myItemCosts,每次你添加一个新项目时,你都会将规定的价格添加到列表中,你可以在最后打印每个项目
下面是一个例子:
然后output()可以这样构造:
如果您决定需要为任何给定的杂货项目添加更多功能,如SKU、数量、折扣等,您应该创建自己的对象来封装这些属性:
然后在用户每次输入所有必要信息时实例化一个新的SampleGroceryItem,并将该对象添加到列表中