关于JS在OJ系统上面输入输出的总结

1.输入
为了更好的模拟OJ平台,测试的时候我是将测试数据以文档形式保存,然后直接通过流的形式读入数据
var fs = require("fs");
var data = '';
var readerStream = fs.createReadStream('data.txt');
readerStream.on('data', function(chunk) {
   data += chunk;
});
下面是OJ上面的以process.stdin标准的输入(因为OJ系统上面并没有明确指出输入的data的来源以及data的长度,究竟是一组数据还是所有的测试数据,LZ在此纠结了很久,因为data数据是会影响到下面循环的数据输出的,当然如果是一组一行数据是没有影响的)。经过测试发现,这里的data是后台系统中所有存放的测试数据。
process.stdin.on('data', function (data) {
    input += data;
});
2.输出
对于一组单行的数据,测试应该是比较简单的,这里LZ就不再总结强调了,但有一点点需要注意
LZ不知道是否有人注意到这里的+号,第一次写代码的时候因为没怎么影响结果,所以并没有太注意。但是有一次LZ在本次测试结果无任何问题,然后系统测试一直失败,最后LZ把原因找到+这里了。这里就是正数的意思,如果你的input_arrays1[0]是字符串型数据,这个时候在调用函数传参的过程中特别容易出错。(字符串型数据千万不要使用+)

这里是多行数据输入的情况,在本地和系统上面都测试过,没有问题。但是提醒大家需要注意的一点是,之前单行输入的时候
if(line==='') continue;是只有对line进行判断的。LZ当时觉得应该不需要对line2和line3进行判断,然后之后测试代码一直出错,出错
点是如果没有对line2等进行判断的话,如果它进行split('')等操作,就容易提示出错!所以大家切记要进行数据的判断
帖总结,LZ新手,大家多指教。。。最后附上NodeJS的学习网站,总结还是比较全的http://www.yiibai.com/nodejs/nodejs_streams.html








全部评论
+不是正数的意思。。+是JS的一元加运算符,具体说法如下: 绝大多数开发人员对一元加和减操作符都不会陌生,而且这两个 ECMAScript 操作符的作用与数学 书上讲的完全一样。一元加操作符以一个加号(+)表示,放在数值前面,对数值不会产生任何影响, 如下面的例子所示:var num = 25;num = +num; // 仍然是 25不过, 在对非数值应用一元加操作符时, 该操作符会像 Number() 转型函数一样对这个值执行转换。 换句话说,布尔值 false 和 true 将被转换为 0 和 1,字符串值会被按照一组特殊的规则进行解析,而 对象是先调用它们的 valueOf() 和(或) toString() 方法,再转换得到的值。 详情请看《JavaScript高级程序设计(第3版)》第38页 示例代码如下: +(-1); // -1并不会变成正数 +(false); // 0
点赞 回复 分享
发布于 2017-03-31 19:46
楼主好棒!!!
点赞 回复 分享
发布于 2016-08-11 17:24
具体方案呢?
点赞 回复 分享
发布于 2016-09-19 16:44
楼主厉害了,总结的很好
点赞 回复 分享
发布于 2017-03-28 21:07

相关推荐

02-10 12:23
已编辑
新余学院 C++
采集想要offer:专业技能那里要一条一条的列出来吧,感觉你项目很厉害了,但是如果你不写技术栈面试官对你项目不太懂的话都没办法问你八股😂C++都是基架岗,都是一群9✌🏻在卷,我觉得你要是有时间学个go把MySQL和redis写上去找个开发岗吧
点赞 评论 收藏
分享
MScoding:你这个实习有一个是当辅导老师,这个和找技术岗没有关系吧?
点赞 评论 收藏
分享
评论
点赞
14
分享

创作者周榜

更多
牛客网
牛客企业服务