我如何使用else和if语句

时间:2019-03-29 06:29:14

标签: c++ if-statement blackjack

我在运行代码时都会出现两个选项

我尝试了两个if语句else if and else

cout << "would you like to hit or stand?" << endl; //asking if you would ike to hit or stand

bool hit; //the hjitting opption
bool stand; // the stand / hit option

cin >> hit, stand; // the avaiabillity for hitting or standing (player input)
if ( hit = true) // if you hit
{
    for (n = 1; n <= 1; n++) //loop for how many cards are you have
    {
        num = rand() % 13; //get random number
        cout << num << "\t"; //outputting the number
    }
}

{
    cout << "you stand \n"; // saying you stand

我希望代码在您说命中时输出数字,而当您说站立时则说您站立,但这只是将命中仅放在立场上,或两者都放在enter code here

2 个答案:

答案 0 :(得分:2)

摘要:

bool hit;
bool stand;
cin >> hit, stand; 

不会根据您输入的内容神奇地设置布尔值之一。您的cin语句将尝试从用户那里获取两个独立的布尔值。

您可能想要做的是获取一个 string ,然后对其进行操作,例如:

std::string response;
std::cin >> response;
if (response == "hit") {
    do_hitty_things();
} else if (response == "stand") {
    do_standy_things();
} else {
    get_quizzical_look_from_dealer();
}

此外(尽管如果您接受我的建议,这无关紧要),表达式hit = true是一个赋值而不是一个比较。比较将使用==if (hit = true)的结果是首先将hit设置为true,然后将其用作条件。因此,它将永远是真的。

另请参见here来针对true和/或false显式检查布尔值是很荒谬的。

答案 1 :(得分:-1)

击打或站立是一个选择,因此您需要一个布尔变量。

bool hit;
cin >> hit;

hit是一个布尔变量,因此它已经为true,如果为false,则无需将其与true(或false)进行比较。因此,if (hit)就可以了。如果将其与true进行比较,那么它是==而不是=,因此if (hit == true)也可以。

最后,由于您的选择会导致两个选择,因此您需要一个if ... else ...语句。

if (hit)
{
    for (n = 1; n <= 1; n++) //loop for how many cards are you have
    {
        num = rand() % 13; //get random number
        cout << num << "\t"; //outputting the number
    }
}
else
{
    cout << "you stand \n"; // saying you stand
}

当您仍在学习C ++语法和规则的基础时,您需要编写少量代码。即使在这个简短的程序中,您也会遇到多个错误,并且很难确定发生什么错误。在这个阶段,您实际上应该一次编写一行代码。在编写下一行之前,请进行测试以确保其正常工作。