关于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