代码之家  ›  专栏  ›  技术社区  ›  Will

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

  •  1
  • Will  · 技术社区  · 6 年前

    我只是尝试通过使用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.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”,这表明它试图写两次??

    1 回复  |  直到 6 年前
        1
  •  2
  •   Randy Casburn    6 年前

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

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

    收件人:

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