parseInt 在获取整数数组中的第一个值后返回 NaN



我能够推送数组中的第一个整数元素。之后,它将每个输入值作为 NaN。

我们如何在运行时删除数组输入中的空格。正如Ryan所说,readLine返回了一些不能解析为整数的东西。

process.stdin.resume();
process.stdin.setEncoding('ascii');
var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;
process.stdin.on('data', function (data) {
    input_stdin += data;
});
process.stdin.on('end', function () {
    input_stdin_array = input_stdin.split("n");
    main();    
});
function readLine() {
    return input_stdin_array[input_currentline++];
}
/////////////// ignore above this line ////////////////////

function main() {

    var n = parseInt(readLine());
    var a = [];

        for(var i=0;i<n;i++)
        {
         /*I am able to get first input but not for next iteration input value taken as NaN*/
         var no = parseInt(readLine(),10);
         console.log(readLine())

           a.push(no);

        }



}

例如

输入:1 2 3 4 5

输出:1 NaN NaN NaN NaN

根据给定的输入1 2 3 4 5,它将失败,因为数字之间有空格。 parseInt返回除数字以外的任何输入的NaN

您可以自己尝试一下:

parseInt('1 2 3 4 5', 10) // returns 1
parseInt('12345', 10) // returns 12345

您可以在此处阅读有关它的更多信息(以及parseInt的替代方案(:https://coderwall.com/p/5tlhmw/converting-strings-to-number-in-javascript-pitfalls

您可以做的是验证输入并去除所有斜杠:

"1 2 3 4 5".replace(/s/g, ""); // "12345"

这将使您的函数很好地处理数字输入,而其他输入则失败。它读起来就像你的函数应该处理各种输入,而不是使用 RegEx 来过滤掉空格之类的东西(而且,正如古老的格言所说,你现在有两个问题(

相关内容

最新更新