向预编写程序中添加更多类

问题描述 投票:-1回答:1

我的任务是向预先编写的程序中再添加2个类,一个类进行所有计算,而一个类则打印总帐单。我知道如何添加其他类,但由于程序看起来已经在主类内部进行了计算,因此有点困惑。

我尝试过仅添加类,但由于明显缺少其信息而抛出错误。

public static void main(String[] args)
{
    String squantity, snumber, output, line_output = "";
    String [] item = new String [5];
    double [] cost = new double [5];
    double [] quantity = new double [5];
    double [] amount = new double [5];
    int number, i;
    double grandtotal = 0;
    String costout, amountout, grandtotalout;
    DecimalFormat df2 = new DecimalFormat("$##,###.00");

    for(i=0;i<=4;++i)
    {
        output = "   Acme Grocery Store" + "\n" +
           "1-Green Beans $0.35 per pound" + "\n" +
           "2-Yellow Beans $0.40 per pound" + "\n" +
           "3-Head Lettuce $0.79 per pound" + "\n" +
           "4-Leaf Lettuce $1.98 per pound" + "\n" +
           "5-Hot House Tomatoes $0.99 per pound" + "\n" +
           "6-Hydro Tomatoes $3.98 per pound" + "\n" + "\n" +
           "Please make your selection ";

        snumber = JOptionPane.showInputDialog(null,
                output, "Input Data", JOptionPane.QUESTION_MESSAGE);
        number = Integer.parseInt(snumber);
        squantity = JOptionPane.showInputDialog(null,
            "Enter Quantity", "Input Data", JOptionPane.QUESTION_MESSAGE);
        quantity[i] = Double.parseDouble(squantity);

        //code for the calculation
        if(number == 1)
        {
            cost[i] = 0.35;
            item[i]="Green Beans";
        }
        else if(number == 2)
        {
            cost[i] = 0.4;
            item[i]="Yellow Beans";
        }
        else if(number == 3)
        {
            cost[i] = 0.79;
            item[i]="Head Lettuce";
        }
        else if(number ==4)
        {
            cost[i] = 1.98;
            item[i]="Leaf Lettuce";
        }
        else if (number==5)
        {
            cost[i] = 0.99;
            item[i]="Hot House Tomatoes";
        }
        else
        {
            cost[i] = 3.98;
            item[i]="Hydro Tomatoes";
        }

        amount[i]=cost[i]*quantity[i];
        costout=df2.format(cost[i]);
        amountout=df2.format(amount[i]);
        line_output=line_output+item[i]+"  "+costout+"  "+amountout+"\n";
        grandtotal=grandtotal + amount[i];
    }//for loop

    grandtotalout=df2.format(grandtotal);
    output=line_output+"\n"+ "The total grocery bill = "+grandtotalout;
    JOptionPane.showMessageDialog(null, output, " ", JOptionPane.INFORMATION_MESSAGE);
    System.exit(0);
}//main

我们应该添加课程

class grocery {
}

class printbill{
}

我尝试弄乱了extends函数,但我也不认为这是正确的

java
1个回答
0
投票

起初,您的杂货店课程看起来像这样:

final class Grocery
{
    Grocery(String InputItem, double InputCost, double InputQuantity)
    {
         Item = InputItem;
         Cost = InputCost;
         Quantity = InputQuantity;
    }

    public final String GetItem()
    {
         return Item;
    }

    public final double GetCost()
    {
        return (double)InputQuantity * Cost; 
    }

    private final String Item;
    private final double Cost;
    private final int Quantity;
}

PrintBill类可能会这样:

final class PrintBill
{
    PrintBill(Grocery [] InputGroceries)
    {
         Groceries = InputGroceries;
    }

    public final void Print()
    {
         double Cost, TotalCost = 0.0;
         String Line = "";
         String Item;

         for (int i = 0; i < Groceries.length; i++)
         {
              Cost = Groceries[i].GetCost();
              Item = Groceries[i].GetItem();
              TotalCost += Cost;

              // I'll leave it up to you to print this info out. 
              Line = Item + "  " + Cost +"  "+ TotalCost +"\n";
         }

         JOptionPane.showMessageDialog(null, output, " ", 
                         JOptionPane.INFORMATION_MESSAGE);

    }


    private final Grocery [] Groceries;
}

您的main()将是:

public static void main(String[] args)
{
    String squantity, snumber, output, line_output = "";
    Grocery [] Groceries = new Grocery [4];
    PrintBill TheBill;
    int number;

    for (int i = 0; i < Groceries.length; i++)
    {
        output = "   Acme Grocery Store" + "\n" +
                 "1-Green Beans $0.35 per pound" + "\n" +
                 "2-Yellow Beans $0.40 per pound" + "\n" +
                 "3-Head Lettuce $0.79 per pound" + "\n" +
                 "4-Leaf Lettuce $1.98 per pound" + "\n" +
                 "5-Hot House Tomatoes $0.99 per pound" + "\n" +
                 "6-Hydro Tomatoes $3.98 per pound" + "\n" + "\n" +
                 "Please make your selection ";

         snumber = JOptionPane.showInputDialog(null,
                  output, "Input Data", JOptionPane.QUESTION_MESSAGE);
         number = Integer.parseInt(snumber);
         squantity = JOptionPane.showInputDialog(null,
                 "Enter Quantity", "Input Data", JOptionPane.QUESTION_MESSAGE);
         quantity = Double.parseDouble(squantity);

         if(number == 1)
         {
             Groceries[i] = new Grocery("Green Beans", 0.35, quantity);
         }
         else if(number == 2)
         {
             Groceries[i] = new Grocery("Yellow Beans", 0.4, quantity);
         }
         // etc...

    }

    TheBill = new PrintBill(Groceries);

    TheBill.Print(); 

}

实际上需要完成更多工作,但无论如何,它应该为您提供一个起点。

快乐的日子:-)

© www.soinside.com 2019 - 2024. All rights reserved.