do-while循环不断重复
The do-while loop keeps on repeating
>我有一个代码片段(我们在银行系统上分配了一个学校项目,这是第一个登录屏幕,也请注意,这个代码片段在main()函数内)像这样:
int choice;
do
{
clrscr(); // for clear screen
cout << "1. Help!" << endl;
cout << "2. About Us..." << endl;
cout << "3. Log In" << endl;
cout << "4. Sign Up" << endl;
cout << "Option: ";
cin >> choice;
}while((choice != 1) || (choice != 2) || (choice != 3) || (choice != 4));
但问题是,无论我输入 1 还是 2、3 或 4 还是任何其他数字,循环都会不断重复,它只是忽略了选择的值......如果我没有错,那么一旦选择获得 1 或 2 或 3 或 4 的值,循环应该立即退出,如果它获得的值不是 1 或 2 或 3 或 4,循环应该继续......编译程序时没有错误,所以我无法了解实际问题是什么。
额外信息:-
操作系统: 视窗 7编译器:Visual C++ Express Edition(也在Borland Turbo C++ 4.5和Dev C++以及Code::Blocks最新版本中尝试过,但仍然是相同的问题)
循环条件将始终为真; choice
不可能同时拥有所有这些值。
据推测,您打算使用&&
,以便在choice
具有任何这些值时循环终止。
简短回答:
当choice
不同于 1 或不同于 2、3 或 4 时,您重复此操作。如果 choice
的值正确,则由于其他 3 个条件,您将循环。
while((choice != 1) || (choice != 2) || (choice != 3) || (choice != 4));
你可能的意思是&&
:
while(choice != 1 && choice != 2 && choice != 3 && choice != 4);
或:
while(choice < 1 || choice > 4);
逻辑解释:
基本上,您希望在choice
的值不正确时进行循环。在此上下文中,正确表示:choice == 1 || choice == 2 || choice == 3 || choice == 4
。
因此,第一个条件可能是:
while (!(choice == 1 || choice == 2 || choice == 3 || choice == 4));
如果你还记得那!(a || b) == (!a && !b)
.你也可以写:
while (choice != 1 && choice != 2 && choice != 3 && choice != 4);
这也是有道理的:循环而选择与 1 和 2 以及 3 和 4 不同。
您还可以确定 正确 表示:choice >= 1 && choice <= 4
。在这种情况下,您将拥有:
while (!(choice >= 1 && choice <= 4));
或者,使用相同的属性:
while (choice < 1 || choice > 4);
你已经告诉它,如果选择不是 1 或不是 2,就继续前进。您可能的意思不是 1 也不是 2,等等。
如果有人输入"做第一"之类的内容,你会遇到cin的麻烦,所以我建议你将代码更改为以下内容
# include <iostream>
#include <stdlib.h>
# include <string>
# include <sstream>
using namespace std;
int main ()
{
string choice="";
int num = 0;
while (true) {
system("cls"); // for clear screen
cout << "1. Help!" << endl;
cout << "2. About Us..." << endl;
cout << "3. Log In" << endl;
cout << "4. Sign Up" << endl;
cout << "Option: ";
getline(cin, choice);
stringstream Stream(choice);
if (Stream >> num)
break;
cout << "Invalid number, please try again" << endl;
}
}
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 如何使用 do while 循环确定最高值和最低值
- do while 循环中的 if 语句以 yes 或 no 结尾
- 使用 while 或 do while 退出循环
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 为什么我的 Do-while 循环无法在C++中运行菜单
- 如果语句不会在 do - while 循环中运行
- 如何在c++中读取do-while循环中的空白
- 将嵌套的 for 循环更改为 do-while 循环
- 如何修复不会在退出选择时终止的 do-while 循环
- 为什么这个do-while循环每隔一个循环只写入数组?
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 卡在链表中的无限 Do-while 循环中
- 试图调节我的 do-while 以停止在终端中退出程序.菜单不会根据需要循环使用当前语句
- 使用基本 do-while 循环求解泊松方程
- do-while循环不会退出C
- 如何在C++中使用带有"do while"循环的计数器?
- 无休止的 do while 循环C++代码