2015-12-12 21 views
2

所以我想做一個博彩遊戲。玩家必須輸入一個介於0到100之間的數字,而不能高於或低於這個數字。這是我迄今爲止。C++函數循環,如果語句不工作

int Player_Money = 100; 
int Computer_Money = 100; 



int Check(int &b) { //b here would be Player_Money 
    int Player_Bet = 0; 
    bool Exit_Loop = false; 

    cout << "Please Enter A Number Between 0 and " << b; 

    while (!Exit_Loop) { 
     cin >> Player_Bet; 
     if (Player_Bet <= 0) { 
      cout << "The Amount That You Have Entered Is To Low.\n"; 
     } 

     else if (Player_Bet > b) { 
      cout << "The Amount That You Have Entered Is Too High.\n"; 
     } 

     if (Player_Bet > 0) { 
      if (Player_Bet < b) { 
       Exit_Loop = true; 
       if (Player_Bet = b) { 
        cout << "You Have Gone All In!\n"; 
        Exit_Loop = true; 
       } 
      } 

     } 
     return Player_Bet; 
    } 
} 

而當我嘗試做檢查(變量);這就是發生了什麼。

如果它低,它會說它低,並退出循環。 如果它高,它會說你已經輸入了一個數字高。然後退出。 如果範圍內,它說你已經全部進入,返回100,然後退出。

什麼,我想知道的是:

*如何正確進行循環週期以及如何使函數返回正確的號碼。

+1

您的返回語句位於循環內部,它將在第一次執行後立即從'Check()'返回。另外:當((Player_Bet <= 0)'或'(Player_Bet> b)''你從未設置'Exit_Loop = true'時。 – dhke

回答

0

首先檢查Player_bet是否比0更小並且小於b。之後檢查是否等於b

int Player_Money = 100; 
int Computer_Money = 100; 

int Check(int &b) { //b here would be Player_Money 
    int Player_Bet = 0; 
    bool Exit_Loop = false; 

    cout << "Please Enter A Number Between 0 and " << b; 

    while (!Exit_Loop) { 
     cin >> Player_Bet; 
     if (Player_Bet <= 0) { 
      cout << "The Amount That You Have Entered Is To Low.\n"; 
     } 
     else if (Player_Bet > b) { 
      cout << "The Amount That You Have Entered Is Too High.\n"; 
     } 
     else if (Player_Bet > 0 && Player_Bet < b) { 
      Exit_Loop = true; 
     } 
     else /* if (Player_Bet == b) */ { 
      cout << "You Have Gone All In!\n"; 
      Exit_Loop = true; 
     }  
    } 
    return Player_Bet; 
} 
+0

你確定嗎?這仍然包含循環中無用的'while()'循環和return語句*。 – dhke

+0

@dhke你說得對。 (回答改變) – Rabbid76

0

如果它的範圍之內,它說你都進去了所有,返回100,並通過與離開

如果改變(Player_Bet = B)(Player_Bet == b)由於=可將B到Player_Bet和==是比較值。

如果您不希望它在範圍值之前退出,請將返回Player_Bet; out while while循環

0

一個我在您發佈的代碼段看到的主要問題是,你有內你while loopreturn聲明。所以不管Player_Bet的值如果總是會返回,並在第一次迭代結束時結束該方法....換句話說,如果永遠不會實際上循環。

0

在有你的代碼有幾個問題:

  1. 您正在使用=來比較,你應該使用==
  2. 您正在冗餘比較。
  3. 您的退出循環沒有意義,因爲您將始終返回。

這會更適合你。但請注意,一邊做(真)一般不是一個好主意。

while (true) { 
    cin >> Player_Bet; 
    if (Player_Bet <= 0) { 
     cout << "The Amount That You Have Entered Is To Low.\n"; 
    } else if (Player_Bet > b) { 
     cout << "The Amount That You Have Entered Is Too High.\n"; 
    } else { 
     if (Player_Bet == b) { 
      cout << "You Have Gone All In!\n"; 
     } 
     return Player_Bet; 
    } 
}