为什么我的循环没有结束有点困惑

毛里

所以这是我的代码:

int k = 1;
string sTemp = "";

do {
    cout << "Enter the ID number for sequence " << k << ": ";
    cin >> sTemp;
    if(!bValid_digit(sTemp))
        cout << "Invalid input. ID number must be 3 digits long.\n\n";
    else if(bIs_taken(sTemp))
        cout << "Invalid input. ID number cannot be the same as a previous member.\n\n";
    else {
        k++;
        ID.push_back(sTemp);
        stored_ID.push_back(sTemp);
    }
}
while(bIs_taken(sTemp) || !bValid_digit(sTemp) || ID.size() != 10);

我正在做的是获得3位ID成员的用户输入,对此我有一个单独的功能bValid_digit(),可以正常工作;然后我通过使用函数测试ID号是否已经被占用bIs_taken(),它也可以正常工作;然后我ID.size() != 10在do-while循环的条件下进行测试,因为我只希望用户输入10个ID号,这就是问题所在。为什么在ID.size()达到10时循环不退出

ID.size()通过cout在每次循环运行之后检查大小来测试,并且确实在第10个有效ID输入之后达到了大小10,但是循环仍然没有结束。为什么?

编辑:IDstored_ID都是函数中其他地方的字符串向量。

尼科斯

您需要重新评估bIs_taken(sTemp)多次:

  1. 它在if测试中评估为false,因为您尚未推送ID
  2. 但它在while条件下的计算结果为true,因为您刚刚添加了该值

任何一个

  • 存储第一个返回的值并在条件中使用它
  • 或将您的循环条件简化为while (ID.size() != 10),另外两个则是多余的(如果长度无效或ID已被使用,则不能达到十分之一)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对我的 if 循环没有运行有点困惑?

来自分类Dev

为什么还原没有结束?

来自分类Dev

循环没有结束

来自分类Dev

没有结束的循环

来自分类Dev

为什么在评估函数返回的变量时,“ while”循环没有结束?

来自分类Dev

为什么我输入某个形状的面积后,我的程序没有结束?

来自分类Dev

为什么我的async.waterfall javascript顺序代码没有结束?

来自分类Dev

为什么我会收到“如果没有结束就阻止”的消息?

来自分类Dev

我的程序没有结束

来自分类Dev

为什么声明返回值时我的函数没有结束(Node.js和Express.js)

来自分类Dev

流没有结束

来自分类Dev

C#while循环没有结束

来自分类Dev

在iOS中,为什么拖动到UIImageView之外并没有结束PanGestureRecognizer?

来自分类Dev

对 NSDecimalNumber 有点困惑?

来自分类Dev

如何告诉javadoc我的句号没有结束

来自分类Dev

两个循环和move_uploaded_file,我有点困惑

来自分类Dev

我很困惑为什么我的程序没有循环和打印

来自分类Dev

为什么我的按钮没有点击?

来自分类Dev

我对Zend OPCache配置有点困惑

来自分类Dev

我有点困惑的按位运算

来自分类Dev

返回内部函数的真假,我有点困惑

来自分类Dev

Ruby初学者,我有点困惑

来自分类Dev

我对 php 中的以下代码有点困惑

来自分类Dev

Vim折叠,没有结束标记

来自分类Dev

如果没有结束则阻止

来自分类Dev

登出后vmtoolsd没有结束

来自分类Dev

读取的mpi文件没有结束

来自分类Dev

设置事件的高度没有结束

来自分类Dev

Docker 处理没有结束的进程?