2011-04-28 66 views
1

如何將此代碼分成兩個類?我希望Input類處理純粹的輸入和Tax類來處理添加稅和結果。這可能嗎?所以基本上我想通過第一類TaxClass而不是Input類來打印稅額等。這裏是我的代碼:Java - 分解代碼

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)); 
} 
} 
+0

你意識到你沒有以任何有意義的方式使用這些數組,對吧?這到底是什麼意思? – 2011-04-28 19:56:33

+0

數組包含所有商品的價格。然後我乘以每個數組項並輸出它。 – tekman22 2011-04-28 19:59:30

+0

我建議添加你的主要方法,以便給你一個更好的程序流程概念,並可能有助於描述你的類。另外,家庭作業標籤將會很好。 – Riggy 2011-04-28 19:59:57

回答

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) { ... } 
} 

然後在您的主要方法中,您將創建一個TaxableItem對象數組,每個用戶輸入一個。您還可以創建一個收據類來爲您完成大部分工作,這樣會更好。

0

你的代碼是一個爛攤子 - 變量名稱混亂,有一段代碼中的註釋,不必要的拆箱環路...

如果你想利用雙值的數組和繁殖的每個值有一些常量的數組,那麼用Iterator在你的下一個()方法中做一些自定義List類呢?在迭代集合時,您會得到相乘的數字,並保持原始值不變。

您的輸入類將只收集輸入列表中的輸入,您將使用它來創建列表,並在輸出類中循環並輸出結果。您還可以製作輸入和輸出接口並實施它們 - 更加靈活。