美文网首页
牛客网使用JS刷题如何处理输入输出

牛客网使用JS刷题如何处理输入输出

作者: 大水啊大水 | 来源:发表于2017-03-14 13:32 被阅读7109次

    某牛官方帮助文档镇楼

    其中已经给出了js的样例,以简单的A+B题目为例

    var readline = require('readline')
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    })
    rl.on('line', function(line) {
      var tokens = line.split(' ')
      console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
    })
    

    尝试使用node本地运行,我们可以发现,每输入一行回车后即会输出结果,然后可以继续输入

    执行结果

    我们来解读一下怎么处理的输入输出

    //每读一行,即一行输入结束敲回车,执行事件line对应的方法(这里为计算A+B并输出)
    rl.on('line', function(line) {
      var tokens = line.split(' ')
      //直接使用console.log进行输出,一次输出即为一行,输出多行可多次使用console.log
      console.log(parseInt(tokens[0]) + parseInt(tokens[1]));
    })
    

    关于读多行的问题,理清以后就可以自行解决了,如下方法(看上去好像不太优雅)

    // 获取三行输入的值,输出它们的和
    var countLine = 1
    var tokens = []
    rl.on('line', function(line) {
      tokens.push(line)
      if(countLine === 3) {
        //求和
        console.log(
          tokens.reduce(function(sum, item) {
            return sum + parseInt(item)
          }, 0)
        );
        countLine = 1
        tokens = []
      } else {
        countLine++
      }
    })
    

    但是如果题目中并没有给出具体的输入行数,上面的方法就不可取了,我们需要一次性读取所有的输入然后再处理输出,操作如下

    process.stdin.resume();
    process.stdin.setEncoding('ascii');
    
    var input = "";
    var input_array = "";
    
    process.stdin.on('data', function (data) {
        input += data;
    });
    
    process.stdin.on('end', function () {
        input_array = input.split("\n");
        // 处理input
    });
    

    我个人比较喜欢使用第一种方法,在本地终端使用也很方便,第二种方法的话,如果在终端中使用,需要将end事件修改成

    process.on('SIGINT', function() {
      // 你的处理
      process.exit(0);
    })
    

    这样的话,使用ctrl+c就可以得到输出

    吐槽某马和某鹅

    习惯了牛客的node输入输出以后其它的都不适应了……

    赛马网node官方给出的是上面说到的第二种处理方式,第一种应该也行但我没有试过。注意:赛马将js和node分为两种不同的输入输出,个人很不适应所谓的js输入输出,虽然看上去好像很简单,但是本地不好测啊……输出好像还是用定制的print函数来着……对了,练习的时候还有node选项,等到正式笔试就只有js选项了,神坑……附:赛码网在线编程系统使用指南

    腾讯则根本没有node选项,只有定制的js输入,使用固定的main函数接受输入,我至今还不太理解……输出还是用console log

    相关文章

      网友评论

          本文标题:牛客网使用JS刷题如何处理输入输出

          本文链接:https://www.haomeiwen.com/subject/yxzcnttx.html