当我输入负整数时,它仍会循环返回
<app-deduction-invoice-item
*ngFor="let item of deductionForm.get('items')?.controls; let i=index"
[index]="i"
[item]='item' // <-- HERE
(removed)="deductionForm.get('items').removeAt($event)">
</app-deduction-invoice-item>
答案 0 :(得分:2)
您的代码调用未定义行为(UB),因为它试图求和为z
,而z
未初始化时使用。
将其初始化为零。
此情况如下:
while (n != 0 || n < 0);
只要n
的值不同于0或小于0,请再次循环。
我猜您想在输入为负数时停止循环,这意味着您需要这样做:
while (n >= 0);
这意味着只要n
为非负数(即0或正数),就可以继续执行do-while循环的主体。
但是,请注意,在for循环中使用该结构后,您将从总和z
中提取出负数(似乎您希望它是循环的中断信号)。
如果您不希望发生这种情况,可以使用关键字break
来停止执行循环。
答案 1 :(得分:2)
不确定您希望这样做吗?
while (n != 0 || n < 0);
将其翻译成自然语言,并说“只要n
不是0
或小于0
,循环”。
我想第二个条件现在很明显暗示?仅当n
恰好是0
时,此循环才会退出。
请注意,这不是唯一的错误:您很高兴地使用z
而不进行初始化,因此最终可以得到任何值(z
的初始值为不确定)