2016-02-04 60 views
0

Java新手。我正在爲一個項目編寫一個簡單的程序。這是一個允許用戶購買披薩的程序。它有一個運行總額和一個訂單總結。我使用這些線路以保持總&小計:Java - 具有兩位小數或小數位的double * int算術顯示

switch(mainMenuAnswer) //Switch statement to get correct pricing multiplied by # of desired pizza ordered 
{    
    case 1: 
     total = total + (pizzaPrices1[otherAnswer - 1] * count); 
     miniTotal = pizzaPrices1[otherAnswer - 1] * count; 
     break; 

    case 2: 
     total = total + (pizzaPrices2[otherAnswer - 1] * count); 
     miniTotal = pizzaPrices2[otherAnswer - 1] * count; 
     break; 

    case 3: 
     total = total + (pizzaPrices3[otherAnswer - 1] * count); 
     miniTotal = pizzaPrices3[otherAnswer - 1] * count; 
     break; 

    case 4: 
     total = total + (pizzaPrices4[otherAnswer - 1] * count); 
     miniTotal = pizzaPrices4[otherAnswer - 1] * count; 
     break; 

    case 5: 
     total = total + (pizzaPrices5[otherAnswer - 1] * count); 
     miniTotal = pizzaPrices5[otherAnswer - 1] * count; 
     break; 

} 

達爾和miniTotal雙打是0.0開始了,而價格在## ##的格式,其次是數量,這是一個。整數值。他們正在成倍增長。

有時我得到一個很好的答案,比如$ 42.35(隨機數),但有時我得到:

How many large pizzas?: 4 

--------------------------------------------------------- 

Your current order total is $151.91 

--------------------------------------------------------- 

Specialty Pizza Menu 

1) Meat Lovers 
2) BBQ Chicken 
3) Hawaiian 
4) Chicken-Bacon Ranch 
5) Vegetarian 
6) Exit Menu 

Your choice?: 6 

Order Summary: 

Type     Size   Quantity Price 
--------------------------------------------------------- 
Meat Lovers   Large   5   $99.94999999999999 
BBQ Chicken   Large   4   $51.96 

Order total: $151.91 
--------------------------------------------------------- 

注意,一切都被格式化(以防萬一)到小數點後兩位,除了雙值「直接在」價格「下。我也可以很容易地格式化,但我不知道如何。代碼格式化行是:

System.out.printf("%-22s %-13s %-11d %-2s \n" , typeArray[i], sizeArray[i], quantityArray[i], priceArray[i]); //Formatting 

我嘗試使用%-11.2d,但它給了我一個錯誤。有人知道發生了什麼事嗎?我認爲這是可變的雙倍和內存位,但什麼是一個好的解決方案?

注意:priceArray是一個STRING數組,格式爲$ ##。##。

+0

使用雙打貨幣是一個壞主意(正如你發現的)。你需要一個十進制的數據類型或者只是把所有的計算都保存在便士中 –

+0

我不知道Currency類,直到我完成了這個程序的一半,否則我會用它 – bankey

+0

@Andremoniy就是我在我的第一個Java類來自C++,並且必須根據我的教授給我的程序(這就是爲什麼程序的外觀和格式是這樣)爲我們的程序遵循特定格式,我可以向你保證我知道什麼是循環,的東西。我說你的評論是無用的,因爲那正是它的意思。我一點也不在乎你從哪裏買比薩餅,而且你也沒有權利抱怨我的寫作風格,因爲我們需要遵循編程項目的嚴格格式(當然你不知道但是仍然決定咆哮) – bankey

回答

1

由於價格數組是一個字符串數組,因此您不能給它數字格式。將它保持爲雙數組,並在最後使用2到2位十進制字符串轉換。