You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:01:20