大佬教程收集整理的这篇文章主要介绍了用node.js做在线笔试,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一.js的控制台输入
做各大公司的在线编程题,一般都有输入输出,传统的js不能完成读取输入的功能,这时候为了继续用js写编程题,只能借助node.js来进行在线笔试的输入输出,下面具体来说说这个问题。
用node.js写编程题的核心在Node的readline接口,读取输入行,
require('readline') 模块提供了一个接口,用于从可读流(如 process.stdin)读取数据,每次读取一行。 它可以通过以下方式使用:
const readline = require('readline');
基本用法如下:
const readline = require('readline');//在这里引入 const rl = readline.createInterface({ //创建输入输出接口 input: process.stdin,output: process.stdout }); rl.on('line',function(linE){//监听控制台的输入 var data=line.trim();//拿到控制台输入 var result=....//编程逻辑处理 console.log(result); //输出结果 });
通过这样一个过程,拿到输入->逻辑处理->输出结果,完成在线笔试。
但是实际中会碰到一个棘手的问题,就是有的题目,输入不止一行,会有2行甚至N行的输入,那么像上面这种写法,data只能拿到第一次单行的输入,不能够拿到多行输入,所以不能@L_801_11@问题,那么接下来通过两个简单小例子介绍如何进行接收控制台多行输入。
二.两行输入的在线编程
题目:输入两行,第一行是字符串s1,第二行是字符串s2,输出两个字符串连接后的结果。
例子:
输入 "Hello" "world" 输出 "Helloworld"
代码如下:
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin,output: process.stdout }); var k=2;//这里代表题目中设定好的输入的行数 var rows=[]; //用于存储每行的输入 rl.on('line',function(linE){ rows.push(linE);//将每次输入的行数据存入 if(k==rows.length){//当输入的行数等于设定的k值时,开始逻辑处理 var result=rows[0]+rows[1]; //连接字符串 console.log(result); //输出结果 rows.length=0;//状态重置 } });
三.N行输入的在线编程
题目:输入数字N(1<N<10),接下来输入N行字符串,输出所有字符串连接后的新字符串。
例子:
输入:4 "nice" "to" "meet" "you" 输出:"niCETomeetyou"
代码如下:
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin,output: process.stdout }); var k=-1;//先给行数置-1,表示还没开始读取 var rows=[]; //用于存储每行的输入 rl.on('line',function(linE){ if(k<0){ k=parseInt(line.trim());//读取第一行,得到接下来输入的行数 }else{ rows.push(line.trim());//将每次输入的行数据存入 if(k==rows.length){//当输入的行数等于设定的k值时,开始逻辑处理 var result=rows.reduce(function(fir,cur){ //连接字符串 return fir+cur; }); console.log(result); //输出结果 rows.length=0;//状态重置 k=-1; } } });
四.另一种不是按照行输入的方式
在做笔试时碰到过例题的输入方式,不是按行读入的,是一次性读入,然后按照“n”进行行分隔,下面上个具体例子的代码,供大家参考,有兴趣的可以学习下。
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"); var nLine = 0; while(nLine < input_array.length){ var line = input_arraY[nLine++].trim(); if(line === ''){ conTinue; } var input_arrays = line.split(' '); var a = +input_arrays[0]; var b = +input_arrays[1]; console.log(a+b); } });
五.总结通过以上这种方式,应该能完成大部分的在线编程题,有需要的童鞋可以试试看。祝大家笔试顺利,找到一份满意的工作!
以上是大佬教程为你收集整理的用node.js做在线笔试全部内容,希望文章能够帮你解决用node.js做在线笔试所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。