【问题标题】:How can I restart while loop after certain condition (if) satisfied in c++? [closed]在 C++ 中满足某些条件(如果)后,如何重新启动 while 循环? [关闭]
【发布时间】:2012-09-26 06:09:35
【问题描述】:

我在while循环中有很多if语句,程序必须根据条件打印错误消息,但如果有多个错误,则必须只有其中一个。

【问题讨论】:

  • 也许switch case 语句可以更好地工作
  • 你的意思是进入循环的下一次迭代,还是像从第一次迭代一样重新开始循环?
  • 但是在条件之后,我必须阅读字符串(命令)的下一部分才能知道它们是否有错误?并且所有这些都必须在while循环中,因为用户不断输入命令
  • 是的,Jerry Coffin,这正是我想说的
  • 你应该更喜欢 Switch 而不是多个 If 或 if-else 阶梯 ..

标签: c++ if-statement while-loop


【解决方案1】:

您的问题不是很详细,因此很难说出您到底想要什么。

如果您希望 while 循环在任何错误触发后进入下一次迭代,您应该使用 continue 语句:

while( something )
{
    if( condition )
    {
        //do stuff
        continue;
    }
    else if( condition 2 )
    {
        //do other stuff
        continue;
    }
    <...>
}

如果循环内只有这些ifs,并且条件是整数值,则应考虑改用switch

while( condition )
{
    switch( errorCode )
    {
        case 1:
        //do stuff;
        break;
        case 2:
        //do other stuff;
        break;
        <...>
    }
}

如果您想完全重新启动循环……嗯,这有点困难。由于您有一个while 循环,您可以将条件设​​置为它的起始值。例如,如果您有这样的循环:

int i = 0;
while( i < something )
{
    //do your stuff
    i++;
}

然后你可以像这样“重置”它:

int i = 0;
while( i < something )
{
    //do your stuff
    if( something that tells you to restart the loop )
    {
        i = 0;//setting the conditional variable to the starting value
        continue;//and going to the next iteration to "restart" the loop
    }
}

但是,您应该非常小心,因为很容易意外获得无限循环。

【讨论】:

  • 不是所有的整数,命令包括字符串、整数、双精度。根据错误的优先级,终端上只需要出现一个错误。但我的就像把每一个错误都放在终端上
  • 在第一个代码中,不需要continue语句
  • @Sha,我在等这个评论。我们不知道在许多if 语句之后是否还有其他代码。如果没有 - 你是对的。如果有 - 需要 continue
  • 你是对的。我也是这么想的。但他没有写任何代码。所以我们不知道。
【解决方案2】:
String errorMessage = "No Error";

while( cond){
if( cond 1) {
  errorMessage = " Error 1"
}

if( cond 1) {
  errorMessage = " Error 1"
}

if( cond 1) {
  errorMessage = " Error 1"
}

if( cond 1) {
  errorMessage = " Error 1"
}
}

如果您想在遇到任何错误后中断,请使用break

如果您想在遇到任何错误后忽略当前迭代,请使用continue

如果遇到任何错误后要终止执行,请使用exit

【讨论】:

  • 嗯,我相信这是 OP 实际上需要摆脱的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多