C++ 需要添加循环以退出或在C++;
我想做一个代码,要求用户输入退出或重复。我没有得到期望的输出C++ 需要添加循环以退出或在C++;,c++,C++,我想做一个代码,要求用户输入退出或重复。我没有得到期望的输出 int main() { char yes,yn; do { cout << "Hello world!" << endl; while(yn != 'y' || yn != 'Y' || yn != 'n' || yn != 'N') { cout<<"enter (Y/N): ";
int main()
{
char yes,yn;
do
{
cout << "Hello world!" << endl;
while(yn != 'y' || yn != 'Y' || yn != 'n' || yn != 'N')
{
cout<<"enter (Y/N): ";
cin>>yes;
yn = yes;
}
}while(yn == 'y' || yn == 'Y');
}
intmain()
{
是的,伊恩;
做
{
库特
这永远是真的,应该是
while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
我认为执行时只需执行while循环
int main()
{
char yes,yn;
do
{
cout << "Hello world!" << endl;
cout<<"enter (Y/N): ";
cin>>yes;
yn = yes;
if(yn=='N'||yn=='n')
{
break;
}
}while(true);
}
现在,我在if条件的循环中添加了break语句,并更改了do while条件
在这种情况下,它将在任何条件下运行循环,并且仅当用户输入n或n时才会退出循环。我没有测试,但您的问题似乎在这里:
while(yn != 'y' || yn != 'Y' || yn != 'n' || yn != 'N')
此条件始终为真(但不应为真)。应为:
while(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
或
此外,yn
未初始化,您可能希望在(…)时再次执行do{…};
。您没有初始化变量yn
。因此,此语句
while(yn != 'y' || yn != 'Y' || yn != 'n' || yn != 'N')
没有意义,事实上这是没有必要的。
请尝试以下代码
#include <iostream>
int main()
{
char yes_no;
do
{
std::cout << "\nHello world!" << std::endl;
std::cout<< "Do you want to repeat? (enter Y/N): ";
std::cin >> yes_no;
} while ( yes_no == 'y' || yes_no == 'Y' );
}
#包括
int main()
{
char yes_no;
做
{
std::cout首先,这个表达式:
(yn != 'y' || yn != 'Y' || yn != 'n' || yn != 'N')
总是正确的,因为yn
总是不等于这些事情之一
(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
这可能就是你的意思
其次,如果你这样做了,你的生活会更轻松
yes = toupper (yes);
(即,把它放在大写),那么你只需要寻找一件事
第三,也是最严重的一点,您的内部while
在初始化之前检查yes
的值。可以使用do
while()
构造,也可以在循环之前初始化该值
第四,现在还不清楚您想在这里做什么。您真的需要两个循环吗?谢谢大家的帮助。我已经从你们所有人那里得到了我想要的。这是最后一个成功运行的代码。我已经根据您的意见改进了我的代码
int main()
{
char yes,yn;
do
{
.......... (main content of program, do things here.)
do
{
cout<<"Do again? (Y/N):";
cin>>yes;
yn = toupper(yes);
if(yn!='N' && yn != 'Y')
{
cout<<"Invalid selection"<<endl;
}
if(yn=='N' || yn == 'Y')
{
break;
}
}
while(true);
}
while(yn == 'Y');
}
intmain()
{
是的,伊恩;
做
{
(节目的主要内容,在这里做事。)
做
{
库提斯;
yn=toupper(是);
如果(yn!='N'&&yn!='Y')
{
coutyn没有初始化,一个do…while可以在内部循环中更好地工作。而外部循环在这一点上似乎没有用。为什么是两个循环。我认为一个循环就可以满足您的需要…请重新考虑您的编码…内部循环不是必需的。这将检查“y和y”。如果我输入除“y,y,n或n”之外的任何内容它将退出循环。我特别希望只使用这四个字母来执行操作。@Krups如果用户输入的值与这四个字母不同,您希望执行什么操作?如果用户输入的字符与退出程序的字符不同,您希望执行什么操作。我不希望这样做。@Krups我已经对代码进行了一些更改,现在只有当用户输入N或nyes。问题就在那里。我已将| |替换为&。获得更多进展。一个循环是检查输入字符是否在这4个字符中(现在我添加了toupper。在这种情况下,介于2个字符之间)不允许使用其他字符。在y和n之间进行第二次循环检查。但欢迎使用更好的解决方案,只要它们满足这两个条件。
(yn != 'y' && yn != 'Y' && yn != 'n' && yn != 'N')
yes = toupper (yes);
int main()
{
char yes,yn;
do
{
.......... (main content of program, do things here.)
do
{
cout<<"Do again? (Y/N):";
cin>>yes;
yn = toupper(yes);
if(yn!='N' && yn != 'Y')
{
cout<<"Invalid selection"<<endl;
}
if(yn=='N' || yn == 'Y')
{
break;
}
}
while(true);
}
while(yn == 'Y');
}