使用 "else if" 是否消除了在 while 循环中的每个条件后休息的需要?
Does using "else if" eliminate the need for breaks after each condition in a while loop?
使用"else-if"是否消除了while循环中每个条件后的中断?当输入了一个正确的输入时,我想退出循环。
我的代码的第一个版本看起来像这个
string s;
string str;
while (true) {
cin >> s;
if (s == "a") {
str = "Apple";
break;
}
if (s == "b") {
str = "Banana";
break;
}
... more ifs ...
else {
cout << "Did not recognize input." << endl;
continue;
}
}
我可以将其更改为下面的代码而不产生负面后果吗?它更短,对我来说更好看。
string s;
string str;
while (true) {
cin >> s;
if (s == "a") str = "Apple";
else if (s == "b") str = "Banana";
else if (s == "c") str = "Cat";
... more else-ifs ...
else {
cout << "Did not recognize input." << endl;
continue;
}
break;
}
是的,可以。else if
链确保只有else
的情况continue
触发循环,而不命中else
的情况触发break
。
可以。
提示:如果你想确定重构是否有效,你可以写一个测试来检查代码是否正确。
代码做同样的事情,关于执行时间没有区别,所以它们是相似的。不过,您不需要第一个代码片段中的最后一个break
。然而,如果你想为你的案例设计一个好的样式,你应该考虑switch
语句。
while(true){
char c;
cin >>c;
switch (c) {
case 'A':
// deal with char A
break;
case 'b':
// deal with char b
break;
default:
continue;
}
break;
}
对于带字符串的switch语句,您可以检查以下内容:在C++中评估带开关的字符串
我发现switch语句更优雅。
相关文章:
- 如何在for循环中包含两个索引值的测试条件
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 在循环条件 i<sqrtN(预先计算)和 i*i<N 中,C++哪个更有效?
- 尽管条件为真,循环仍停止
- 为什么我不能在 for 循环中出现这样的条件?(C++)
- C++ 即使不满足条件,循环也会终止
- 具有迭代器和自定义步长的循环结束条件
- 有没有办法在循环中的条件至少满足一次时运行语句?
- 为什么循环没有中断,并且 if 条件没有按预期工作?
- 为什么我不能将 size() 函数编写为 while 循环中的条件?
- 虽然循环即使应用了错误条件也不会退出
- 当循环在条件C++之前停止工作时
- Leetcode C++用于循环条件
- 当满足条件时,While循环未结束
- 对于检查 >=0 终止条件时的循环索引类型
- 调用以条件循环(c++)
- 使用布尔条件c++循环时无法退出
- 在条件C++循环语句中向SQLite3表中插入条目