当条件为真或假时,如何让它返回并再次提出问题,让用户重新输入值? 这是我想要实现的:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int n;
cout<<"Enter numbers. Press 5 to stop: ";
cin>>n;
bool tr=true;
while(tr)
{
if(n!=5)
cout<<"You entered "<<n; //How to make it return again, since its false? I keep getting infinite loops :( ;
else
tr=false;
}
return 0;
}
答案 0 :(得分:3)
您需要在 while循环中提示用户,以便它在每次迭代中发生:
int n;
bool tr = true;
while(tr)
{
cout << "Enter numbers. Press 5 to stop: ";
cin >> n;
if(n!=5) {
cout << "You entered " << n;
} else {
tr = false;
}
}
答案 1 :(得分:2)
将所有代码(除'n'和'tr'定义除外)放入while循环中,如下所示:
int main()
{
int n;
bool tr=true;
while(tr)
{
cout<<"Enter numbers. Press 5 to stop: ";
cin>>n;
if(n!=5)
cout<<"You entered "<<n;
else
tr=false;
}
return 0;
}
答案 2 :(得分:2)
另一个回答了所有的工作,并且有一些东西可以学习如何从它们改进程序流程,但我相信你要求的技巧是continue
关键字,它会跳过这个迭代的剩余部分。循环。
bool tr = true;
int n;
while (tr)
{
cout << "Enter numbers...";
cin >> n;
if (n != 5)
continue;
else
tr = false;
}
编辑第1部分:在continue
关键字上。
您希望尽可能使代码可读。在这个例子中,它的使用是不必要的(正如其他海报所示);但它是问题的答案“我如何在循环的迭代中跳过剩余的处理并继续下一次迭代?”。通常,这种破坏性指令实际上使代码更难阅读;但有时情况恰恰相反。使用continue
或break
可以完成的任何事情(或者至少几乎任何事情)都可以在没有它们的情况下完成,所以如果你打算使用它们,你想要有一个明确的理由这样做。通常,当我使用continue
时,这是因为我循环遍历输入集合,并且我想在输入不是我期望的格式时跳过处理循环。像这样的东西(伪代码)......
foreach (Input i in ReceivedInputs)
{
if (i.isBad())
{
cout << "Bad input";
continue;
}
// Do massive block of calculating here.
}
比这更容易阅读...
foreach (Input i in ReceivedInputs)
{
if (i.isBad())
cout << "Bad input";
else
{
// Do massive block of calculating here.
}
}
因为第二个版本会让你更难跟踪你所处的范围,如果你正在寻找大量计算结束的话。在这种情况下,我通过continue
获得了代码可读性,因此我使用它。但简单的代码可能不应该使用它。 break
关键字类似,但提出break
有益的示例要容易得多。
编辑第2部分:多次迭代
这只是设置循环的问题;这里没有神奇的关键词。我能提出的最短路可能是这样的:
int n = 0;
int numberToTake = 10;
for ( int numbersTaken = 0; numbersTaken < numberToTake; ++numbersTaken)
{
cout << "Enter numbers...";
int n = 0;
for (cin >> n; n != 5; cin >> n)
cout << "Try again.";
// Do whatever processing on n you want to do here.
}
虽然我应该指出,这样做,你将从用户获得的唯一价值是5,如果他输入任何不适合整数的东西,你将得到意想不到的行为。 / p>
编辑3:在更全面地阅读评论后,我认为您只是在寻找for
循环的更传统用法。
答案 3 :(得分:0)
无需额外的bool
变量。
成语可以是:无限循环,直到用户输入5
:
for(;;) { // Loops infinitely
cout << "Enter numbers. Press 5 to stop: ";
cin >> n;
if(n == 5)
break; // Exits the loop
cout << "You entered " << n; // Before the if if you want to print 5 as well
}