繁体   English   中英

为什么process.stdout.write()向平方结果添加额外的0?

[英]Why is process.stdout.write() is adding an extra 0 to squared result?

我只是想通过使用process.stdin传入一个数字然后使用process.stdout.write来平方一个数字。

我首先尝试这样做:

process.stdin.resume();
process.stdin.setEncoding('utf8');

var stdin = '';
process.stdin.on('data', function (chunk) {
    stdin += chunk;
}).on('end', function() {
    var lines = stdin.split('\n');
    for(var i=0; i<lines.length; i++) {
        let num = Number(lines[i])
        let sqrd = num*num
        process.stdout.write(sqrd);
    }
});

然后,我得到一个数据类型错误,因为我返回的是数字而不是字符串。 然后,我尝试对process.stout.write(sqrd)进行以下修改:

process.stdout.write(sqrd.toString());  

我希望如果传递值5,它将返回25,但是在实际操作中,它将返回250。这是为什么?

有没有更好的方法返回结果?

编辑:我试图找出返回值的类型:

process.stdin.resume();
process.stdin.setEncoding('utf8');

var stdin = '';
process.stdin.on('data', function (chunk) {
    stdin += chunk;
}).on('end', function() {
    var lines = stdin.split('\n');
    for(var i=0; i<lines.length; i++) {
        let sqrd = lines[i]*lines[i]
        process.stdout.write(typeof(sqrd));
    }
});

并返回“ numbernumber”,表明它正尝试写两次?

第二次迭代是由行数组中剩余的换行(\\ n)字符引起的。 不要迭代最后一个元素。 要解决此问题,请执行以下操作:

更改:

for(var i=0; i<lines.length; i++) {

至:

for(var i=0; i<lines.length - 1; i++) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM