2016-09-23 41 views
4

我正在爲我的介紹級C#課程研究以下兩個問題。我已經完成了問題3,但遇到了問題4的問題。問題是總沒有出現正確的,因爲它沒有添加第一個輸入的組合值,我不太確定我出錯的位置。我希望你們能提供幫助。請記住,這是一個介紹水平的課程,所以它需要簡單的for循環,如果再聲明,做while語句等,這裏是我的代碼至今:介紹C#類循環問題

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Enter number of customers: "); 
     var numCust = Convert.ToInt32(Console.ReadLine()); 
     int lunchCombo = 0; 
     decimal total = 0; 
     Console.WriteLine("Enter lunch combo purchased"); 
     lunchCombo = Convert.ToInt32(Console.ReadLine()); 
     for (int i = 1; i < numCust; i++) 
      switch (lunchCombo) 
      { 
       case 1: 
        Console.WriteLine("Enter lunch combo purchased"); 
        lunchCombo = Convert.ToInt32(Console.ReadLine()); 
        total = total + 4.25M; 
        break; 
       case 2: 
        Console.WriteLine("Enter lunch combo purchased"); 
        lunchCombo = Convert.ToInt32(Console.ReadLine()); 
        total = total + 5.75M; 
        break; 
       case 3: 
        Console.WriteLine("Enter lunch combo purchased"); 
        lunchCombo = Convert.ToInt32(Console.ReadLine()); 
        total = total + 5.25M; 
        break; 
       case 4: 
        Console.WriteLine("Enter lunch combo purchased"); 
        lunchCombo = Convert.ToInt32(Console.ReadLine()); 
        total = total + 3.75M; 
        break; 
       default: 
        Console.WriteLine("Invalid input"); 
        break; 
      } 
     Console.WriteLine("Your total is {0}", total); 
     Console.ReadKey(); 
    } 
} 
  • 甲餐廳有4個午餐連擊供客戶選擇:

    組合1:炸雞與色拉[價:4.25] 組合2:馬鈴薯泥烤牛肉[價:5.75] 組合3 :魚和薯條[價格:5.25] 組合4:湯和沙拉[價格:3.75]

    編寫一個程序,詢問客戶訂購哪種午餐組合。使用switch語句來確定並顯示客戶需要支付的金額。如果客戶訂購了不在菜單上的東西,則顯示「輸入無效」。不要使用任何if ... else語句。

  • 展開程序3以計算應付一組客戶的總金額。該計劃首先要求該組中的客戶數量。然後它使用一個循環逐個接受訂單。如果客戶訂購了不在菜單上的東西,請忽略該訂單並轉到下一位客戶。使用組中的客戶數量來確定循環執行的次數。不要讓用戶輸入一個特殊的值,如-1來停止循環。計算並顯示小組需要支付的總金額。

  • +0

    「它不添加進入第一個組合值」 - 可能是因爲這樣的:'的for(int i = 1; I Quantic

    回答

    0

    你需要問客戶他們想要的東西組合 switch語句。我就用僞代碼,所以我不能直接做家庭作業給你:

    var total = 0; 
    var numCust = "How Many Customers?" 
    
    for (int i = 0; i < numCust; i++){ 
        var combo = "What Combo do you want?" 
        switch (combo){ 
         case 1: 
          total += 4.25; 
          break; 
         case 2: 
          total += 5.25; 
          break; 
         case 4: 
          total += 5.75; 
          break; 
        } 
    } 
    
    write("The total is: " + total); 
    
    +0

    謝謝,尋求幫助。我使用了您的建議,但現在只允許我爲1位客戶輸入組合,無論輸入的客戶數量多少。有任何想法嗎? –

    +0

    請確保您的循環從0開始,並確保您輸出的For循環總數 https://dotnetfiddle.net/QxNczG –

    +0

    我還注意到,您沒有花括號來定義for循環在你原來的問題。檢查我的.net小提琴,看看有什麼不同。 for { switch(x){} } –

    0

    您將需要添加現有的排序邏輯的另一循環內你在開始閱讀的客戶數量的代碼。這是邏輯,但你應該寫代碼。我不認爲這會幫助你學習任何東西,如果有人在這裏爲你寫代碼。

    loop (numCust) { 
        read order number; 
        loop (lunchCombo) { 
         add to total; 
        } 
    } 
    
    0

    你需要在的開始for循環和switch語句之前,有下面兩條線的一個實例:

    Console.WriteLine("Enter lunch combo purchased"); 
    lunchCombo = Convert.ToInt32(Console.ReadLine()); 
    

    然後你切換了lunchCombo用戶選擇。

    另外,您的for循環應該從i = 0循環到i < numCust或從i = 1循環到i < = numCust。你用你擁有的方式離開客戶。

    +0

    這非常有幫助。非常感謝你! –

    0

    這將是更容易啓動你的內部for循環的循環在I = 0,而不是我的= 1。然後,要求用戶輸入的午餐組合switch語句

    for (int i = 0; i < numCust; i++) 
    { 
        Console.WriteLine("What is this customer's order?"); 
        lunchCombo = Convert.ToInt32(Console.ReadLine()); 
    
        switch (lunchCombo) 
        { 
         case 1: 
          total = total + 4.25M; 
          break; 
         case 2: 
          total = total + 5.75M; 
          break; 
         case 3: 
          total = total + 5.25M; 
          break; 
         case 4: 
          total = total + 3.75M; 
          break; 
         default: 
          Console.WriteLine("Invalid input"); 
          break; 
        } 
    } 
    
    0

    之外想想從1開始的效果以及你停止櫃檯的地方。

    也就是說你從1開始計數到n-1,這意味着如果你循環的次數少於預期的次數。所以,如果numCustomers是4,循環結果:

    i starts at | 0 | 1 | 2 | 3 | 4 | 
    --------------------------------- 
    i loop... | 4 | 3 | 2 | 1 | 0 | 
    

    ,所以我不經過足夠的時間越來越如果我在1開始。你需要做的一個變化。將我從0開始更改,或將比較更改爲< =。要麼會工作。

    別擔心,這是一個常見錯誤!

    (感謝Quantic的評論答案!)