2016-10-12 15 views
0

私は一つだけ入力ノードで2つの入力を次々に読み取るにはどうすればよいですか?

var readline = require('readline'); 

process.stdin.setEncoding('utf8'); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    terminal: false 
}); 

rl.on('line', readLine); 

function readLine (line) { 
    if (line !== "\n") { 
    var firstNum = parseInt(line.toString().split(' ')[0], 10); 
    process.exit(); 
    } 
} 

を把握することができました私が試した:
を - 再び
RL呼び出す - 出回っそして、ちょうど昔ながらのハッキング - 別
をRLに類似したVARの作成最後の時間

私は2つを読むことができるようにしようとしています。私は、対応する番号を追加した場合たとえば、入力

2つの入力間:

1 2 3 4 5 
6 3 4 7 11 
出力は次のようになります。

7 5 7 11 16 

答えて

0

あなたは後)(process.exitを呼んでいます最初の読み取り。これですべてが終了し、コードはもう実行されません。

最初の行を保存してから別の行を読み取ってから、プロセスを終了する必要があります。

次にコードを確認してください。私はfirstNumsecondNumの外にの機能を宣言しました。次に、firstNumが既に割り当てられているかどうかを確認します(そうでない場合は最初の読み取り、それ以外の場合は2回目の読み取り)。 2回目の読み込みでは、保存されているものを確認するためにconsole.logを実行し、最後にプロセスを終了します。

var readline = require('readline'); 

process.stdin.setEncoding('utf8'); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    terminal: false 
}); 

rl.on('line', readLine); 

var firstNum, secondNum; 

function readLine (line) { 
    if (line !== "\n") { 
    if (!firstNum) { 
     firstNum = line; 
    } else { 
     secondNum = line; 
     console.log(sum(firstNum, secondNum)); 
     process.exit(); 
    } 
    } 
} 

function sum(str1, str2) { 
    var n1 = str1.split(' ').map(function(n){ return parseInt(n); }); 
    var n2 = str2.split(' ').map(function(n, i){ return parseInt(n) + n1[i]; }); 
    return n2.join(' '); 
} 

あなたは、文字列を分割し、それらを表示する前に数字を合計するためにあなたのロジックとconsole.log呼び出しを置き換えることができます。

EDITは、ちょうどあなたが望むようにsum(s1, s2)機能を追加しました。それをチェック!

+0

ありがとうございます!素晴らしい答え。 – dapperdan1985

0

行を読み終えたら終了します。あなたのプログラムがもう動いていなければ、2行目を読むことはできません。

var readline = require('readline'); 

process.stdin.setEncoding('utf8'); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    terminal: false 
}); 

var lines = []; 
rl.on('line', readLine); 

function addLines(l1, l2) { 
    return l1.map(function(e, i) { 
    return e + l2[i]; 
    }); 
} 

function readLine(line) { 
    var numbers = line.toString().split(' ').map(function(x) { 
    return parseInt(x); 
    }); 
    lines.push(numbers); 
    if (lines.length == 2) { 
    var sumLine = addLines(lines[0], lines[1]); 
    console.log(sumLine); 
    process.exit(); 
    } 
} 
+0

ありがとうございました。もう少し詳しく説明したので、私は他の答えを選んだだけです。 – dapperdan1985

関連する問題