2014-11-20 61 views
0

所以我有以下代碼保存值,而在for循環

for (int i = 0; i <= numberOfTickets; i++) 
    { 
     System.out.println("Please enter your age or if you are a student enter -1"); 
     int age = input.nextInt(); 

     if ((age < 10) && (age > 0)) 
     { 
      cost = (cost/4); 
     } 
     else if ((age < 16) && (age >= 10)) 
     { 
      cost = (cost/2); 
     } 
     else if (age > 60) 
     { 
      cost = (cost/2.5); 
     } 
     else if (age == -1) 
     { 
      cost = (cost/(4/3)); 
     } 
     System.out.println(cost); 
     } 

問題是說,初始成本爲£10和用戶輸入12的年齡我想£5的值在繼續for循環之前保存爲int ticketCost1,但再次從10開始。 實質上,我希望在循環結束時將門票的所有成本與應用的單個折扣結合起來,然後將它們全部結合在一起併產生最終成本。

P.S.我打算增加更多,以便每個孩子,即0歲至10歲,然後他們與任何16歲以上的人免費。

在java。

+0

你需要一些東西來爲你保存這些數據,public class TicketHelper {int age;浮動成本;/*一些其他的東西* /}'和'列表' – 2014-11-20 22:23:10

+0

對不起,你會恨我,但上面的代碼是關於先進的,因爲我得到所以你將不得不餵我哈哈。你能否以最簡單的方式向我解釋? – JamesB18 2014-11-20 22:24:42

回答

0

做一個新的雙,現在讓我們稱之爲總和。現在不是寫:

cost = (cost/whatever); 

做到這一點:

sum+= (cost/whatever); 

現在保存所有的人在1號取和住宿費用爲10;而所有的折扣都適用。只要確保將初始化總和設置爲0 OUTSIDE並且在for循環之前

0

如果我理解正確,那麼您有一羣年齡不同的人,並且想要查找該組購買的所有門票的總成本。您可以擁有兩個列表,一個存儲年齡,另一個存儲票證成本。該組的成本將是存儲在第二個列表中的總成本。

static final TICKET_PRICE = 10; 

int getTotalCost(List<Integer> ages) { // populated list of ages 
    List<Integer> costs = new ArrayList<>(); 
    for (int i : ages) 
     costs.add(getTicketPrice(int age)); 
    int totalCost = 0; 
    for (int curr_cost : costs) 
     totalCost += curr_cost; 
    return totalCost; 
} 

int getTicketPrice(int age) { 
    int price; 
    if (age > 60) price = TICKET_PRICE/2.5; 
    ... // all the other conditions, e.g. for students, children under 10, etc. 
    else price = TICKET_PRICE; // if no special condition applies 
    return price; 
} 

對於更復雜的情況(例如在10個孩子去自由與另一人16歲以上),這是最好的,如果你有一個單獨的方法來計算總成本。請記住,隨着您增加這些不僅取決於個人而且取決於整個羣體的年齡分佈的條件,最優成本計算本身將開始類似於相當複雜的問題。