C++ If 语句,从其他语句重复
C++ If statement, repeating from else
刚开始C++大学,所以我决定尝试使用C++做一个经典的'商店项目'。
我只是在徘徊,是否有任何方法可以重复其他人的 if 语句。例如,在代码中,我询问用户是否需要帮助浏览商店,如果他们回答是,那么它就会向他们显示选项,如果他们回答否,那么它将继续使用代码,但是如果不是是或否,那么代码告诉用户它无法理解用户。
我要问的是,我是否可以让用户再次输入值,并在不使用循环的情况下重新运行 if 语句,还是必须使用循环?
下面是一些代码:
cin >> help;
if (help == "Yes" || help == "yes")
{
cout << "These are out current sections that you are able to browse:" << endl;
cout << "-Offers and Deals (1) n-Computing (2) n-Console (3) n-Audio (4) n-Electronic Displays (5) n-Cabling (6) n-General Accessories (7)" << endl;
}
else if (help == "No" || help == "no")
{
cout << "You have chosen not to look at our browsing list." << endl;
}
else
{
cout << "Sorry the system does not understand what you have entered. n Please use full English (Yes/No)." << endl;
}
如果有人能帮我解决这个问题,那就太好了。 我知道它的代码很简单,而且可能更有效的方法,只是使用我目前在大学里教授的方式。
提前谢谢。
不使用循环,还是我必须使用循环?
有一些方法可以在不使用循环的情况下实现这一点,但循环正是允许您在条件为真时重复代码块的构造。
这明确表达了您的意图并实现了您想要的结果。
void menu()
{
while (true)
{
int i; std::cin >> i;
if (i == 0) { action0(); }
else if (i == 1) { action1(); }
else if (i == 2) { break; /* Return to caller */ }
else { /* Invalid selection, retry */ }
}
}
另一个合理的解决方案使用递归。例:
void menu()
{
int i; std::cin >> i;
if (i == 0) { action0(); }
else if (i == 1) { action1(); }
else if (i == 2) { return; /* Return to caller */ }
else { menu(); /* Invalid selection, retry */ }
}
但是,与循环相比,这可能有几个缺点。引用弗朗索瓦·安德里埃的评论:
如果不能使用循环,递归是一种合理的选择,但值得一提的是缺点。例如,如果尾部调用优化不起作用,则重复的次数可能会受到限制。如果是这样,那么你基本上有一个隐藏循环。还值得一提的是,你不能用
main
做到这一点。这是许多初学者在第一次发现递归时犯的错误。
相关文章:
- C++ If 语句,从其他语句重复
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 如果有 constexpr if 语句,为什么没有其他 constexpr 语句呢?
- 在后台循环,同时运行其他语句 C++
- C - 如果语句问题.代码将不会运行其他,否则
- 否则,如果语句意外执行,则表现为其他语句
- 我可以将循环用作如果其他条件语句
- 如何引用无效的输入,然后重新输入和如果其他语句
- C 程序运行不正确的其他语句
- C 搜索数组以获取一个数字,但如果找不到该数组,则不会触发其他语句
- 如何将多个变量与其他if语句进行比较
- 如何在内联回调函数中使用EXPECT_EQ和其他Google Mock语句
- C 使用功能定义中的if/其他语句以返回最小的数字
- 最后一行欧普特两个组合输出问题?如果其他语句
- 我的C 代码永远不会超过其他语句
- 为什么if语句中未定义的参数不会导致segfault或其他错误
- 如何停止 while 循环并转到我的其他语句
- C++Bare布尔表达式(不包含if、while或其他语句)
- C++,其他受scanf语句影响的变量
- 为什么自动类型不能与c++语句中的其他内置类型共存