将最终价格显示为货币格式并从java

时间:2017-12-07 15:33:59

标签: java

我差不多完成了一个我已经写了很长时间的学校最终作业的课程。这是99%完成,但我想添加一些东西,使其尽可能完美,需要帮助。

我想以货币格式显示订单的最终价格,但是如果它采用我的tostring方法,我们只想出一种格式化为货币的方式。

如果我创建一个从文件创建订单的方法,那么还有一点可以获得。 (例如:订购1件Reece's Pieces,6个糖饼干,1个巧克力饼干和1勺焦糖冰淇淋)。

这是我的代码。任何帮助表示赞赏。

    package dessertshop;



import java.text.NumberFormat;
import java.util.Scanner;

abstract class DessertItem 
{
   protected String name;

   public DessertItem() 
   {
      this.name = "";
   }

   public DessertItem( String name ) 
   {
      this.name = name;
   }

   public final String getName() 
   {
      return name;
   }

   public abstract double getCost(int number);
}

class Candy extends DessertItem
{
   private double pricePerPound;

   public Candy( String name, double unitPrice )
   {
      super( name );
      this.pricePerPound = unitPrice;
   }

   @Override
   public double getCost(int amount)
   {
      return( amount * pricePerPound );
   }

   public String toString()
   {
      NumberFormat   formatter = NumberFormat.getCurrencyInstance();
      return( "Candy\t" + name + "\t @ " + formatter.format( this.pricePerPound ) + " per pound");
   }
}

class Cookie extends DessertItem
{
    private double pricePerDozen;

    public Cookie(String name, double pricePerDozen)
    {
        super(name);
        this.pricePerDozen=pricePerDozen;
    }

    @Override
    public double getCost(int amount)
    {
        return(amount * pricePerDozen)/12;
    }

    public String toString()
    {
        NumberFormat formatter = NumberFormat.getCurrencyInstance();
        return( "Cookie\t" + name + "\t @ " + formatter.format( this.pricePerDozen) + " per dozen");
    }
}

class IceCream extends DessertItem
{
    private double cost;

    public IceCream(String name, double cost)
    {
        super(name);
        this.cost=cost;
    }

    @Override
    public double getCost(int amount)
    {
        return(amount * cost);
    }

    public String toString()
    {
        NumberFormat   formatter = NumberFormat.getCurrencyInstance();
        return( "Ice Cream\t" + name + "\t @ " + formatter.format( this.cost ) + " per scoop");
    }
}

public class DessertShop
{
    private String name = "";
    private DessertItem[] menu;
    private int numberOfItems = 0;

    public DessertShop(String name)
    {
        this.name = name;
        menu = new DessertItem[200];
    }
    public DessertShop()
    {
        menu = new DessertItem[200];
    }

    public void addToMenu(DessertItem item)
    {
        menu[numberOfItems++] = item;
    }

    public void printMenu()
    {
        System.out.println(this.toString());
        for (int i = 0; i < numberOfItems; i++)
        {
            System.out.print((i + 1) + ": " + menu[i].toString());
            System.out.println("");
        }
    }

    public double createNewOrder()
    {
        double totalCost = 0;
        Scanner input = new Scanner(System.in);
            while (true)
            {
            this.printMenu();
            System.out.print("What would you like to purchase? (0 to checkout) > ");
            int choice = input.nextInt();
            if (choice == 0)
            {
                break;
            }
            System.out.print("How many (lbs. or amount) > ");
            int amount = input.nextInt();
            totalCost += menu[(choice - 1)].getCost(amount);
            }
        input.close();
        return totalCost;
    }

    public String toString()
    {
        return ("Welcome to " + name);
    }

    public static void main( String[] args )
    {

        DessertShop shop01 = new DessertShop("Chuck D's Dessert Depot");
        Candy candy01 = new Candy("Reece's Pieces", 3.99);
        Candy candy02 = new Candy("Chocolate Covered Raisins", 4.99);
        Cookie cookie01 = new Cookie("Peanut Butter", 5.99);
        Cookie cookie02 = new Cookie("Chocolate Chip", 4.99);
        Cookie cookie03 = new Cookie("Sugar", 4.50);
        IceCream icecream01 = new IceCream("Cookie Dough", 3.00);
        IceCream icecream02 = new IceCream("Vanilla", 2.00);
        IceCream icecream03 = new IceCream("Caramel", 3.50);
        IceCream icecream04 = new IceCream("Rocky Road", 2.99);
        IceCream icecream05 = new IceCream("Mint Chocolate Chip", 3.99);
        shop01.addToMenu(candy01);
        shop01.addToMenu(candy02);
        shop01.addToMenu(cookie01);
        shop01.addToMenu(cookie02);
        shop01.addToMenu(cookie03);
        shop01.addToMenu(icecream01);
        shop01.addToMenu(icecream02);
        shop01.addToMenu(icecream03);
        shop01.addToMenu(icecream04);
        shop01.addToMenu(icecream05);

        double frankOrder = shop01.createNewOrder();

        System.out.println(frankOrder);
    }   
}

2 个答案:

答案 0 :(得分:1)

根据您的要求,您可以在最后一行代码格式化价格:

  

的System.out.println(frankOrder)

看看:here

关于另一个问题,从文件中读入,我建议您查看csv文件:here以及如何阅读它们:here

答案 1 :(得分:0)

如果你不想太麻烦,你可以用printf获得不错的结果:

System.out.printf("Price is: €%,d", 12342353563623L);
  

产出是:价格是:€12,342,353,563,623

Formatter on“,”flag:

  

结果将包括特定于语言环境的分组分隔符