这是我的代码。我在这里尝试做的是一个代码,如果名称错误,请求一个名称(如传递),然后程序说出这3条错误消息并再次询问名称,直到2个白名单中的一个给出,然后继续使用代码。
int main(void)
{
setlocale(LC_ALL, "Portuguese");
string Name = "";
cout << "Whats your name dude ?" << endl;
cin >> Name;
if (Name == "ighor" ||
Name == "indio")
{
cout << "Welcome friend =D" << endl;
system("pause");
system("cls");
}
else
{
do
{
cout << "Sorry, wrong name =[" << endl;
system("pause");
system("cls");
cout << "I'll give you another chance =]" << endl;
system("pause");
system("cls");
cout << "Write your name again" << endl;
cin >> Name;
if (Name == "ighor" ||
Name == "indio")
{
continue;
}
} while (Name != "ighor" ||
Name != "indio");
}
cout << "Whats up" << Name << endl;
system("pause");
system("cls");
return 0;
}
我用这段代码测试给了我这个:
如果我把一个白名单(indio或ighor),我得到了正确名称的按摩
“欢迎朋友=]”。
如果我输了一个错误的名字,我得到错误名字的按摩,很好,然后我被要求再次输入名字,我把一个白名单的名字,它一直说这是错的名字,错误的名字也会显示错误的姓名信息。
答案 0 :(得分:0)
do-while
循环中的逻辑存在缺陷。而不是
continue;
你需要
break;
continue;
继续循环的下一次迭代。 break;
打破了循环。
此外,while
语句逻辑不正确。你需要使用:
while (Name != "ighor" && Name != "indio");
^^^ not ||
话虽如此,你只需要其中一张支票,而不是两者。
您可以使用:
do
{
...
if (Name == "ighor" || Name == "indio")
{
break;
}
} while (true);
或
do
{
...
} while (Name != "ighor" && Name != "indio");
答案 1 :(得分:0)
试试这个:
int main() {
string name;
cout << "Whats your name dude ?" << endl;
cin >> name;
while (!(name == "ighor" || name == "indio")) {
cout << "Sorry, wrong name =[" << endl;
system("pause");
system("cls");
cout << "I'll give you another chance =]" << endl;
system("pause");
system("cls");
cout << "Write your name again" << endl;
cin >> name;
}
cout << "Whats up " << name << endl;
system("pause");
system("cls");
return 0;
}
它短小,更干净,更具表现力,而且也有效。
答案 2 :(得分:0)
答案 3 :(得分:0)
感谢我所做的所有答案
continue;
的
`break;`
它工作得很完美=) 但由于代码太混乱,我可能会研究一下你们给我的其他提示,所以我可以让它更干净= D. 我对这段代码还有另一个疑问
cin >> RPI;
if (RPI == "Sim"||RPI == "sim"||RPI == "vou"||RPI == "Vou")
我想要的是“检查”答案并制作一些东西,如果我是“Sim”或“Vou”(意思是“是”和“我愿意”,但无论如何) 我想我可以使用你们告诉我的关于“&amp;&amp;&amp;”的“II”替换的内容。所以它使条件正确。 如果有方法或命令,那么它不会仅仅为了这个答案来区分Capital和小写,所以我不需要将这两个人用来写的方式也有所帮助。 这只是一个学习代码,仅用于研究提议
这是我第一次发布并且真的很惊讶,那些答案太多了,谢谢大家的支持。 你们统治。 好的编码。
答案 4 :(得分:-1)
请正确缩进代码。 尝试替换
continue;
通过
break;
continue语句再次循环,你要做的就是退出它。让我知道它是否有效,因为我现在无法测试。