使用TypeScript解决HackerRank Plus Minus问题时出现NaN错误求助
解决TypeScript中Plus Minus问题输出NaN的问题
你的代码出现NaN的原因很明确:pos 和 neg 变量未初始化。
看你声明变量的这一行:
let pos: number, neg: number, zero: number = 0;
这里只有zero被赋值为0,pos和neg仅声明了类型,但初始值是undefined。当循环里执行pos+=1或neg+=1时,undefined + 1的结果是NaN,后续用这个值计算比值,自然输出NaN。
修正后的代码
只需把pos和neg也初始化为0即可:
function plusMinus(arr: number[]): void { let pos: number = 0, neg: number = 0, zero: number = 0; for (let i=0; i< arr.length; i++){ if(arr[i]>0){ pos+=1; } else if(arr[i]<0){ neg+=1; } else{ zero+=1; } } let len: number = arr.length; let posRatio = (pos/len).toFixed(6); let negRatio = (neg/len).toFixed(6); let zeroRatio = (zero/len).toFixed(6); console.log(posRatio); console.log(negRatio); console.log(zeroRatio); }
验证结果
针对输入数组[-4, 3, -9, 0, 4, 1]:
- 正数共3个,比值为
3/6 = 0.500000 - 负数共2个,比值为
2/6 ≈ 0.333333 - 零共1个,比值为
1/6 ≈ 0.166667
完全匹配预期输出。
内容的提问来源于stack exchange,提问作者user8801184
相关产品推荐
相关产品推荐

