如果.还.语句不输出预期结果.而.循环问题
if.. else.. statements not outputting expected results. While.. loop issue?
请注意,在用户输入之前choiceOne_One等于0。
我当前的代码有问题。我希望用户能够重新输入他们的输入,直到它有效,而不必关闭程序并重新打开它。正因为如此(以及互联网上其他人的建议(,我添加了一个while循环,这看起来很可靠。 出于某种原因,当用户输入 1 时,它会循环遍历第一个 if 语句,就好像输入无效一样,输出"哇!那不是一个选择。等等"。我不知道如何做到这一点,甚至不知道它有什么问题。任何帮助将不胜感激。
cin >> choiceOne_One;
int whileInt=0;
while(whileInt == 0)
{
if (choiceOne_One != 1 || 2)
{
cout << "Woah! That wasn't an option! Try Again.n";
}
else if (choiceOne_One == 1)
{
whileInt++;
cout << "Onen";
}
else if (choiceOne_One == 2)
{
whileInt++;
cout << "Twon";
}
}
这是因为你的if语句。您应该将其更改为
if (choiceOne_One != 1 && choiceOne_One != 2)
这是因为"or"语句未在当前代码中正确使用。通过拥有
(choiceOne_One != 1 || 2)
你本质上是在说,
- 如果 (choiceOne_One !=1(
或
- 如果 (2(。
后一条语句总是为真,因为在C++中,如果你有一个 if 语句后跟一个整数,它将简单地返回布尔值"true"。
这个网站告诉你更多关于它是如何工作的。 http://www.cplusplus.com/forum/articles/3483/
希望对:)有所帮助
导致此问题的原因是choiceOne_One != 1 || 2
被解析为条件始终接受的(choiceOne_One != 1) || 2
(因为 2 是独立于选择的"true"值(。
[我建议]"修复"此代码的方法是使用else
而不是更改条件,尽管这也有效。考虑;
if (choiceOne_One == 1)
{
whileInt++;
cout << "Onen";
}
else if (choiceOne_One == 2)
{
whileInt++;
cout << "Twon";
}
else // only here if NONE of the above conditions are true
{
cout << "Woah! That wasn't an option! Try Again.n";
}
也
- 读取循环内的输入值。当前,choiceOne_One在显示的循环运行时永远不会更改 - 这将导致循环立即终止或永不终止。
-
whileInt
可以/应该更改或消除 - 使用布尔标志或中断/返回。
你必须完成你的if语句:
if (choiceOne_One != 1 && choiceOne_One != 2)
{
cout << "Woah! That wasn't an option! Try Again.n";
}
双||
表示or
,&&
表示and
因此需要同时满足这两个条件才能打印
问题是行if(choiceOne_One != 1 || 2)
您必须将其扩展到if(choiceOne_One != 1 && choiceOne_One != 2)
原因是,在C++中,如果整数为非零,则计算结果为 true
。所以有了你原来的陈述,choiceOne_One != 1 || 2
就变得choiceOne_One != 1 || true
了,当然任何与true
有关的OR都是true
的。
像你们中的一些人指出的那样编辑了第一个 if(( 条件后,我意识到我仍然遇到程序无限期循环第一个语句的问题。我还意识到这是因为我没有写一行让用户再次有机会输入有效的东西(意识到这一点感觉很好(。因此,我熟练地将 while(( 循环外部的行"cin>> choiceOne_One;"剪切并粘贴到 while(( 循环中,瞧!它奏效了。回想起来,我应该早点注意到这一点。
cin >> choiceOne_One;
while(true)
{
if (choiceOne_One != 1 && choiceOne_One != 2)
{
cout << "Woah! That wasn't an option! Try Again.n";
cin >> choiceOne_One;
}else if(choiceOne_One == 1){
cout << "Onen";
break;
}else if (choiceOne_One == 2){
cout << "Twon";
break;
}
}
抱歉,我没有c ++编译器来测试此代码,但我认为这将与您一起使用
- 在更改for循环的第三部分后,未使用for循环结果
- 密码登录程序将永远循环并显示不正确的结果
- 为什么在递归中使用循环会产生意想不到的结果?
- 当我用"ñ"字符循环访问字符串时出现奇怪的结果
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 如何在 for 循环中显示一个结果
- 如何修复循环中的错误产生的错误结果?
- 我的循环超时并且不显示结果
- 在 for 循环中仅显示序列的最后一个结果
- C 编程:在循环时运行 2 并从 loop1 获取数据的随机结果
- C++ 3 for 循环中,结果不应重复
- C++ 循环以在表中输出结果
- 循环中的IF-ELSE条件:未来的迭代覆盖以前的迭代结果
- std::chrono 不同的结果 - 固定的时间步长循环
- 如何在 for 循环中取下第一个结果,使其不会重复
- 为什么循环给出的结果与累积的结果不同
- 嵌套循环导致奇怪的结果
- OpenMP循环结果为零
- 在与 OpenMP 并行的嵌套 for 循环中写入共享数组(通过指针)如何产生错误的结果
- 使用For循环显示1个结果