[英]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.