嵌套 'while' 循环在完成后不循环回到外部 'for' 循环 (c++)
nested 'while' loop not looping back to outer 'for' loop after finishing (c++)
我需要找出任何给定数量的纳税人在任何年限内必须缴纳的税款 $。在程序开始时,输入# of taxpayers,并输入# of years。 while 循环执行得很好,第一次做了它应该做的事情;但是,它永远不会循环回到 'for' 循环并询问下一个纳税人的收入。 (我会注意到我必须这样做,因为它是 class)
for (int i = 1; i <= taxpayers; i++)
{
while (year <= years)
{
cout << "\n\nPlease enter payer " << i << "'s income for year " << year << ": $";
cin >> income;
if (income >= 0)
{
.......
year++;
}
else
{
cout << "\n *Error*"
cin.clear();
cin.ignore(INT_MAX, '\n');
continue;
}
}
}
it never loops back to the 'for' loop & asks for the next taxpayer's income
这是因为在 while
循环第一次完成后,year
已经赶上 years
,以此类推 for
的后续迭代循环,year <= years
总是假的。
在进入 while
循环之前,您需要在 for
循环的每次迭代中将 year
重置回其起始值:
for (int i = 1; i <= taxpayers; i++)
{
year = <your 1st year>; // <-- HERE
while (year <= years)
{
...
}
}
我需要找出任何给定数量的纳税人在任何年限内必须缴纳的税款 $。在程序开始时,输入# of taxpayers,并输入# of years。 while 循环执行得很好,第一次做了它应该做的事情;但是,它永远不会循环回到 'for' 循环并询问下一个纳税人的收入。 (我会注意到我必须这样做,因为它是 class)
for (int i = 1; i <= taxpayers; i++)
{
while (year <= years)
{
cout << "\n\nPlease enter payer " << i << "'s income for year " << year << ": $";
cin >> income;
if (income >= 0)
{
.......
year++;
}
else
{
cout << "\n *Error*"
cin.clear();
cin.ignore(INT_MAX, '\n');
continue;
}
}
}
it never loops back to the 'for' loop & asks for the next taxpayer's income
这是因为在 while
循环第一次完成后,year
已经赶上 years
,以此类推 for
的后续迭代循环,year <= years
总是假的。
在进入 while
循环之前,您需要在 for
循环的每次迭代中将 year
重置回其起始值:
for (int i = 1; i <= taxpayers; i++)
{
year = <your 1st year>; // <-- HERE
while (year <= years)
{
...
}
}