2011-04-28 112 views
1

因此,我的程序在實例化時詢問用戶需要多少「項目」。然後,我的程序創建兩個數組,一個用於「商品名稱」,一個用於「商品價格」。我使用一個循環讓用戶在各自的數組中輸入每個項目名稱和項目價格,但是我失去了項目價格數組。爲了使用我的循環,我需要使用「itemprice.length」元素,但是當我不使用字符串時,我無法做到這一點。用戶輸入每個項目的「價格」將用戶輸入的雙打列表添加到數組中

後,我需要一個乘法器應用到每個數組項,並將其輸出。所以我想,例如,在數組中有三個項目:1.20,1.30,1.40,然後我想讓程序向我詢問「銷售稅」,我可以輸入0.08,然後它將乘以0.08到每個項目並輸出總數。

有沒有一種方法,我可以讓我的程序工作,所以它允許用戶輸入,比方說,5個項目,其價格和我要對正確的方式?任何這樣做更容易嗎?謝謝!

public class Input 
{ 
private Scanner keybd; 
private String item; 
private double cost; 
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(){ 
    for(int index=0; index < itemArray.length; index++){ 
    System.out.println("Enter the item name: "); 
    itemArray[index] = keybd.next();} 
    for(int indexa=0; indexa < itemArray.length; indexa++){ 
     System.out.println(itemArray[indexa]); 
    } 
    for(int indexb=0; indexb < costArray.length; indexb++){ 
    System.out.println("Enter the item cost: "); 
    costArray[indexb] = keybd.next();} 
    for(int indexc=0; indexc < costArray.length; indexc++){ 
     System.out.println(costArray[indexc]); 
    } 
} 
    /** 
    * Accessor method to return the items cost with tax 
    */ 
    public double getTax(){ 
     return costArray.length; 
    } 
+0

如果你需要更多的人不要使用指數A/B/C的名字沒有特別的原因,只是我和J,K,L,但在這裏,他們生活在不同的範圍,所以你可以使用我再次第二個互動。然後,代碼不是OOP。如果itemArray.length必須相同,那麼對於成本和物料,您將創建一個具有屬性(price,total)的複合類Item,並在物料上創建一個Array,並且每個物料和一個netto價格自動創建一個總數。如果可能的話(而不是主題'數組'的作業),你最好使用ArrayList而不是數組。 – 2011-04-28 18:21:54

回答

0

可以作爲嘗試:

System.out.println("Enter the sales tax: "); 
double salesTax = keybd.next(); 

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 * salesTax); 
total = total + cost; 
} 

System.out.println("Total: " + (total-totalTax)); 

編輯:插入期間費用計算總。

+0

那麼我會擺脫所有我的indexb的東西? – tekman22 2011-04-28 17:08:44

+0

indexb的東西將在那裏得到所有的項目的成本再見一個。在獲得每個項目的成本後獲得銷售稅並將其應用於所有項目。在接受成本的同時你也可以做同樣的事情。我會在幾秒鐘內爲您提供代碼。 – GuruKulki 2011-04-28 17:13:10

+0

我還需要了解如何將總稅額加到所有加在一起的項目上?這給我只有稅的總和。謝謝! – tekman22 2011-04-28 17:14:49

0

我不清楚你的問題是什麼。您是否遇到物料成本數據問題?你只是閱讀一個字符串。你應該讀一讀雙數組。

costArray = new double[anyAmountOfItems]; 
// Then when reading use the appropriate Scanner method 
costArray[indexb] = keybd.nextDouble(); 

一對夫婦的風格說明:

  1. 你可能要考慮使用,而不是數組列表。這樣你就不必擔心修復數組的大小。
  2. 沒有必要在每個for循環中使用新的變量名稱。它只是增加了混淆。而不是indexa,indexb等只是使用i。
  3. 更重要的是,使用增強的for循環的情況下,你真的不需要索引:

    爲(字符串項:itemArray){ 的System.out.println(項目); }

1

使用Float[]和使用Float.parseFloat(String str)從字符串到浮點轉換。

順便說一句,與金錢打交道時,浮點是一個壞主意,因爲總是有精確的問題。最好是使用帶有適當的最低貨幣單位整數/多頭(即美分,在美國等)

相關問題