牛客网编程js输入输出总结

本文介绍在牛客网使用JavaScript(v86.0.0)进行编程题解答时,如何处理输入数据,包括单行和多行输入的实现方法,适用于A+B等类型题目,帮助解决在线判题系统测试用例输入难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:

https://www.cnblogs.com/guorange/p/7229152.html

JavaScript作为一种弱类型的编程语言,语法和C/C++、JAVA等存在差别,但是对于大部算法题,不只是C/C++、JAVA,也依然可以使用JavaScript来实现。所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题。

  大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行。但苦恼的是,我们不知道如何像C/C++这样实现输入,类似于C的scanf 和 C++的cin函数。因为平时JavaScript基本都是函数式编程,就是将程序全都封装在函数里面,然后再调用函数,通过console控制台或者node控制台查看结果。前提是,输入已经指定了。于是乎,牛客网在线判题系统的测试用例是无论如何也通过不了的,因为他的测试用例的输入根本就没法传进去。

  主要原因,其实还是牛客网已经提供了针对JavaScript(V8 6.0.0)的解决办法,在这里简要介绍一下,希望对大家有所帮助。

  以下是A+B题目的样例代码,http://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417

  计算a+b的和,每行包行两个整数a和b,对于每行输入对应输出一行a和b的和,距离:

输入

1 5  

2 6

输出

6

8

(1)选择Javascript(v8 6.0.0)

(2)获取输入(注意:readline得到的是字符串,本例需要转化为数字)

while(line=readline()){
    var lines = line.split(' ');  //字符串转换为字符数组
    var a = parseInt(lines[0]);
    var b = parseInt(lines[1]);
    print(a+b);
}

当然 如果是函数的话,也可以像下面这样

while(line=readline()){
    var lines = line.split(' ');
    var a = parseInt(lines[0]);
    var b = parseInt(lines[1]);
    function add(m,n){
        return m+n;
    }
    print(add(a,b));
}

(3)提交运行,可以查看用例通过情况

V8实现多行输入

//多行输入举例
//打印一个多行矩阵
var n = parseInt(readline());
var ans = 0;
for(var i = 0;i < n; i++){
    lines = readline().split(" ")
    for(var j = 0;j < lines.length; j++){
        ans += parseInt(lines[j]);
    }
    print(ans);
}

Node实现多行输入(固定行数)

var readline = require('readline');
const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
});
var countLine = 1;
var tokens = [];
rl.on('line', function(line){
   tokens.push(line);
   if(countLine == 2){
       var arr1 = tokens[0].split('');
       var arr2 = tokens[1].split('');
        for(var i=0; i<arr2.length; i++){
            for(var j=0; j<arr1.length; j++){
                if(arr1[j] == arr2[i]){
                    arr1.splice(j,1);
                }
            }
        }
        console.log(arr1.join(''));       
   }else{
       countLine++;
   }
});

 

var readline = require('readline');
 
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
var K = 2;
var arr = [];
rl.on('line', function(data) {
    arr.push(data);
    if (K == arr.length) {
        var result = deal(arr);
        console.log(result);
        arr.length = 0;
 
    }
});
 
function deal(inputs) {
    //直接根据目标字符分割字符串成数组,计算数组长度减一就是所求。注意不区分大小写。
    return inputs[0].toLowerCase().split(inputs[1].toLowerCase()).length-1;
}

Node实现多行输入(行数不固定)

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 len = input_array.length;
    var result = [];
    for(var i=0; i<len; i++){
        var temp = input_array[i].trim().split(' ');
        for(var j=0; j<temp.length; j++){
            if(temp[j]!=='' && result.indexOf(temp[j]) == -1){
                result.push(temp[j]);
            }
        }
    }
    console.log(result.length);
});
### JavaScript在牛客网平台上的输入输出 对于JavaScript,在线编程环境中通常会遇到不同于常规浏览器或Node.js环境下的输入输出方式。为了适应这种特定的评测系统,开发者需采用专门的方法来获取输入并展示结果。 #### 获取输入 在基于V8引擎的环境下,可以利用`readline()`方法逐行读取输入直到结束标志出现为止[^1]。此过程可以通过循环结构不断调用`readline()`直至满足终止条件,例如检测到特定格式的数据作为文件结尾指示或是其他形式的停止信号。每读入一行字符串之后,可以根据实际需求对其进行解析处理,比如分割成数组元素以便后续运算: ```javascript let inputs = []; while (line = readline()) { let pair = line.split(' '); // 假设每一行为两个数值,则分别转换为整数类型存入临时变量a,b let a = parseInt(pair[0]); let b = parseInt(pair[1]); if (a === 0 && b === 0) break; // 将有效数据加入全局列表中等待进一步加工 inputs.push([a, b]); } ``` 上述代码片段展示了如何连续接收多组由空格分隔开来的两数组合,并将其保存下来供下一步骤使用。 #### 处理与输出 一旦收集齐所需的所有输入项后,就可以定义相应的逻辑函数来进行必要的计算工作了。这里以简单的加法为例说明怎样遍历之前积累起来的数据集并对各成员实施累加操作,最后通过内置命令打印最终答案给评判服务器知晓: ```javascript function addPairs(inputList){ inputList.forEach(([numA,numB],index)=>{ console.log(numA + numB); }); } addPairs(inputs); ``` 值得注意的是,这里的输出应当严格按照题目规定的格式要求完成;任何额外字符(包括但不限于多余的空白符)都可能导致评分失败。因此务必确保仅发送预期中的响应内容至标准输出流。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值