有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    问题是,除了最后一个项目,您没有存储任何项目的价格参考。这就需要一个ArrayList来跟踪已经订购的每个商品

    如果不使用int-myItemCost,而是使用ArrayList<;int>;myItemCosts,每次你添加一个新项目时,你都会将规定的价格添加到列表中,你可以在最后打印每个项目

    下面是一个例子:

    ArrayList<int> myItemCosts = new ArrayList<int>();
    public double getMyItemPrices()
    {
        int n = 0;
    
        while (n < myNumItems)
        {
            System.out.print("Please enter price of item #" + (n+1) + ": ");
            myItemCosts.add(keyboard.nextDouble());
            myTotalCost += myItemCost;
        }
    }
    

    然后output()可以这样构造:

    public void output()
    {
        for(int n = 0; n < myNumItems; ++n)
        {
            System.out.println();
            System.out.printf("%8s %8s %8s", "Item #" + (n + 1) , "Cost: $" + myItemCosts[n], "Total: $" + myTotalCost);
        }
     }
    

    如果您决定需要为任何给定的杂货项目添加更多功能,如SKU、数量、折扣等,您应该创建自己的对象来封装这些属性:

    class SampleGroceryItem
    {
        public SampleGroceryItem(double price, int quantity, string sku, double discount)
        {
            this.Price = price;
            this.Quantity = quantity;
            this.Sku = sku;
            this.Discount = discount;
        }
    
        public double Price;
        public int Quantity;
        public string Sku;
        public double Discount;
    }
    

    然后在用户每次输入所有必要信息时实例化一个新的SampleGroceryItem,并将该对象添加到列表中