我能够推送数组中的第一个整数元素。之后,它将每个输入值作为 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 来过滤掉空格之类的东西(而且,正如古老的格言所说,你现在有两个问题(