前提・実現したいこと
JavaScriptで、繰り返し処理と条件分岐を同時に行う時のやり方を教えていただきたいです。
現在、標準入力から受け取った値が、閏年に該当するかどうかのプログラムを作成しています。
標準入力では、一つ目に、何個の西暦を閏年と判断するか、それ以降に閏年かを判定する西暦を入力しています。
例)
2, 1996, 2010
標準入力で取得した値は、整数化してnum_lines()という配列に格納しています。
一つ目の標準入力は変数Nとして取得しています。
繰り返し文(for)を使って、num_lines[1]からnum_lines[N]までの値をひとつづつ取得し、
条件分岐(switch命令)を使って、それぞれが閏年に該当するか調べていこうとしているのですが、コードを動かしても正しく動いてくれません。
出力結果
'num_lines[i] is a leap year'
とだけ出力されてしまいます。
おそらく、繰り返し文を使ってnum_lines[i]に、num_lines[1]からnum_lines[N]までを一つづつ入れていく処理が
switch命令にうまく反映されていないのが原因なのではないかと思うのですが、改善方法がわかりません。
間違っている点を指摘していただきたく思います。
よろしくお願いいたします。
該当のソースコード
JavaScript
1//標準入力を取得 2process.stdin.resume(); 3process.stdin.setEncoding('utf8'); 4var lines = []; 5var reader = require('readline').createInterface({ 6 input: process.stdin, 7 output: process.stdout 8}); 9reader.on('line', (line) => { 10 lines.push(line); 11}); 12 13reader.on('close', () => { 14//受け取った標準入力を整数化 15 var num_lines = lines.map(function(num) { return num; }); 16//閏年かどうかを検討する西暦の数 17 var N = num_lines[0]; 18 19 for(i=1; i<=N; i++){ 20 21 switch(num_lines[i]){ 22 case 'num_lines[i] % 400 === 0': 23 console.log('num_lines[i] is a leap year'); 24 break; 25 case 'num_lines[i] % 100 === 0': 26 console.log('num_lines[i] is not a leap year'); 27 break; 28 case 'num_lines[i] % 4 === 0': 29 console.log('num_lines[i] is a leap year'); 30 break; 31 default: 32 console.log('num_lines[i] is not a leap year') 33 break; 34 } 35 } 36});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/24 08:12
2020/04/24 10:14
2020/04/24 12:37