我在运行代码时都会出现两个选项
我尝试了两个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
答案 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 ++语法和规则的基础时,您需要编写少量代码。即使在这个简短的程序中,您也会遇到多个错误,并且很难确定发生什么错误。在这个阶段,您实际上应该一次编写一行代码。在编写下一行之前,请进行测试以确保其正常工作。