HackerRank Plus Minus problem: Typescript



我正在尝试解决正负HackerRank使用Typescript的问题。我得到NaN作为前两个print语句的结果,然而,最后一个是工作的。这是我的解决方案:

function plusMinus(arr: number[]): void {
// Write your code here

let pos: number, neg: number, 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);

}

输出如下:

Compiler Message
Wrong Answer
Input (stdout)
6
-4 3 -9 0 4 1
Your Output (stdout)
NaN
NaN
0.166667
Expected Output
0.500000
0.333333
0.166667
有谁能帮我弄明白问题是什么吗?
let pos: number, neg: number, zero: number = 0; 

您只在上面一行中为zero定义了一个默认值。在JS(或TS)中,任何变量的默认值都是undefined,除非你显式地设置一个。

undefined + 1为NaN。

console.log(undefined + 1)

进一步阅读

问题在你的值初始化。

let pos: number, neg: number, zero: number = 0; 

如果你记录这个,你将得到

pos=undefined
neg=undefined
zero=0

现在如果你尝试将number加上undefined它会得到NaN

正确地初始化pos,负和零为0。

相关内容

  • 没有找到相关文章

最新更新