一个简单的c++ While循环不起作用
A simple C++ While loop not working
我有一个简单的while循环,我试图实现,但对于我的生活不能弄清楚我错过了什么。我在顶部将currentuser初始化为-1
while(currentuser = -1){
cout << "Enter user ID: ";
cin >> id;
currentuser = search(a, length, id);
}
我的搜索功能是:
int search (User a[ ], int length, string userID){
User u;
string tempid;
int templegnth; //I ignore length for now as I will use it later
for(int i=0; i<50; i++){
tempid = a[i].getID();
templegnth = tempid.length();
if((tempid == userID)){
return i;
}
}
return -1;
}
=
(赋值)操作符与==
(相等)操作符不同。
行:
while(currentuser = -1){
首先将-1
赋值给currentuser
,然后检查currentuser
是否有非零值。这将永远是这种情况(-1 != 0
),因此循环将永远不会结束。
你的意思可能是:
while(currentuser == -1){
比较currentuser
和-1
,只要比较为真,就继续循环。
您需要更改:
while(currentuser = -1){
:
while(currentuser == -1){
当前每次循环运行时都将currentuser
赋值给-1
,而不是检查它是否仍然赋值给该值
尝试== -1
代替= -1
你已经得到了答案,但这里有一个关于如何在未来避免它的提示。总是尝试使用
while(-1 == currentuser){
std::cout << "Enter user ID: ";
std::cin >> id;
currentuser = search(a, length, id);
}
as this way
while(-1 = currentuser){
;
}
将被编译器抛出
即使将=改为==,循环仍然存在问题。
while(currentuser == -1){
std::cout << "Enter user ID: ";
std::cin >> id;
currentuser = search(a, length, id);
}
在Linux上输入EOT (control-D), control-Z?(在windows上)将引发std::cin
的文件结束条件。id
的值不会被改变,查找可能会继续返回-1。结果是一个无限循环,其中包含大量对std::cout
的吐槽。
解决这个问题的一种方法是在std::cin >> id;
失败时将break
排除在循环之外。例如:if (! (std::cin >> id)) break;
每当我使用while循环和布尔值时,我尽量确保它只在高于或等于50时运行,但每当我使用while和int执行cout时,结果是字面上的混乱,就像while循环执行的次数比它应该执行的要多得多。如:
int Buses;
int People;
cin >> People;
while(People >= 50){
Buses += 1;
People -= 50;
};
cout << Buses << endl;
,当我输入757时,结果是32782。
即使将int值减去32767,值也会自我修复,但更大的数字不会修复,99是1,101是2,但c++说300是3,尽管它应该是6。
(我发现我的解决方案:我必须用0声明Person和Buses变量,因为没有开始的0值是不同的。)
这是固定代码:
int Buses = 0;
int People = 0;
cin >> People;
while(People >= 50){
Buses += 1;
People -= 50;
};
cout << Buses << endl;
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 为什么在 while 循环中返回表达式不起作用
- 如何使用 do while 循环确定最高值和最低值
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- OpenCV QT,显示视频的帧(不使用while循环)