Java - 打破代码

时间:2011-04-28 19:52:04

标签: java

我如何将此代码拆分为两个类?我希望Input类处理纯粹的输入和Tax类来处理税收和结果的添加。这可能吗?所以基本上我想通过第一类TaxClass而不是Input类来打印税总额等。这是我的代码:

public class TaxClass
{
private Input newList;
/**
 * Constructor for objects of class Tax
 * Enter the number of items
 */
public TaxClass(int anyAmount)
{
    newList = new Input(anyAmount);
}
/**
 * Mutator method to add items and their cost
 * Enter the sales tax percentage
 */
public void addItems(double anyTax){
    double salesTax = anyTax;
    newList.setArray(salesTax);
}
}

public class Input
{
private Scanner keybd;
private String[] costArray;
private String[] itemArray;

/**
 * Constructor for objects of class Scanner
 */
public Input(int anyAmountofItems)
{
    keybd = new Scanner(System.in);
    costArray = new String[anyAmountofItems];
    itemArray = new String[anyAmountofItems];
}
/**
 * Mutator method to set the item names and costs
 */
public void setArray(double anyValue){
    //System.out.println("Enter the sales tax percentage: ");
    //double salesTax = keybd.nextDouble();
    double totalTax=0.0;
    double total=0.0;
    for(int indexc=0; indexc < costArray.length; indexc++){
       System.out.println("Enter the item cost: ");
       double cost = Double.valueOf(keybd.next()).doubleValue();
       totalTax = totalTax + (cost * anyValue);
       total = total + cost;
    }
    System.out.println("Total tax: " + totalTax);
    System.out.println("Total cost pre-tax: " + total);
    System.out.println("Total cost including tax: " + (total+totalTax));
}
}

2 个答案:

答案 0 :(得分:0)

我认为你想要的是一个模型和一个控制器。你的控制器会有处理输入的方法。

public class InputController {
    public int getCost() { ... }
    public void promptUser() { ... }
}

您的模型将是一个有成本和税收的项目。

public class TaxableItem {
    private int costInCents;
    private int taxInCents;
    public int getTotal();
    public int getTaxInCents() { ... }
    public void setTaxInCents( int cents ) { ... }
    public int getCostInCents() { ... }
    public void setCostInCents( int cents ) { ... }
}

然后在main方法中,您将创建一个TaxableItem对象数组,每个用户输入一个。你也可以创建一个Receipt类来为你做很多事情,这样会更好。

答案 1 :(得分:0)

你的代码很混乱 - 变量名称令人困惑,评论中有一些代码,循环中不必要的拆箱......

如果你想获取一个Double数组并将数组的每个值乘以一些常量,那么使用Iterator在next()方法中为你做一些自定义List类怎么样? ?迭代整个集合时,数字会成倍增加,原始值保持不变。

您的Input类将只收集输入列表中的输入,您将使用它来创建列表,并在Output类中循环并打印结果。您还可以创建输入和输出接口并实现它们 - 更灵活。