我正在尝试数一串字符串中的猫和狗。所以,
例如:
如果字符串是“cc+dd-cd”,:
我想计算2只阳性猫
、2只阳性狗
、1只阴性猫
、1只阴性狗
(是的,我知道这是一种奇怪的计数方式,但这是我作业的一部分)。
我考虑过做一个 for 循环,在其中迭代字符串,然后嵌套在 for 循环内,我有一个 while 循环,该循环将运行直到“-”,然后运行直到“+”或结束。我开始编写代码,甚至没有深入了解它,它就创建了一个无限循环。
问题:我该如何修复它?
谢谢!
string animalparkString = "cc+dd-cd"
for (int k = 0; k != animalparkString.size(); k++)
{
while (k != '-'){
pdc = pdc + 1; //positive dog count
pcc = pcc + 1; //positive cat count
}
while (k != '+') {
ndc = ndc + 1;
ncc = ncc + 1;
}
}
请您参考如下方法:
当前的问题是 while
循环检查 k
的值,但不修改它。因此,一旦您输入其中之一,您就会无限地卡在那里,因为 k
在循环体内不会改变。
我不会打扰嵌套循环 - 我只需在一个循环中遍历整个字符串,然后依次评估每个字符。实现此目的的一个巧妙方法是保留您是在加还是在减的状态(根据您上次遇到的是 +
还是 -
符号:
bool positive = true;
string animalparkString = "cc+dd-cd";
for (int k = 0; k < animalparkString.size(); k++) {
char ch = animalparkString[k];
switch (ch) {
case '+':
positive = true;
break;
case '-':
positive = false;
break;
case 'c':
if (positive) {
pcc++;
} else {
ncc++
}
break;
case 'd':
if (positive) {
pdc++;
} else {
ndc++
}
break;
}
}