如果.还.语句不输出预期结果.而.循环问题

if.. else.. statements not outputting expected results. While.. loop issue?

本文关键字:结果 循环 问题 语句 输出 如果      更新时间:2023-10-16

请注意,在用户输入之前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";
    }

  1. 读取循环内的输入值。当前,choiceOne_One在显示的循环运行时永远不会更改 - 这将导致循环立即终止或永不终止。
  2. 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 ++编译器来测试此代码,但我认为这将与您一起使用