N 個の文字列の入力

標準入力メニュー【改行区切りでのN個の文字列の入力・1 行目で与えられるN個の文字列の入力 ほか】

【STEP: 1】コード (1)

reader.on('close', () => {
   const N = Number(lines[0]);  // 要素数
   for(let i = 1; i <= N; i++){
      const s = lines[i];  // N 個の 要素を s で受け取り
      console.log(s);  // 表示
   }
});
hogeちゃんの画像

for文で N 個 の文字列を s で受け取りながら 同時進行で出力しています。

【STEP: 1】コード(2)

reader.on('close', () => {
   const N = Number(lines[0]);
   const S = new Array(N);  // 要素数 N 個 の配列
   for (let i = 0; i < N; i++) {
      const s = lines[i + 1];  // s で入力値を受け取り
      S[i] = s;  // S[i] の値として保存
   }
   S.forEach(s => {
      console.log(s);
   });
});
hogeちゃんの画像

要素数 N 個 の配列 S を宣言して for文で各値を受け取り S に代入。forEach() で出力しました。

【STEP: 2】コード(1)

reader.on('close', () => {
   const N = Number(lines[0]);  // 1 行目の入力値(要素数)
   const S = lines[1].split(' ');  // 2 行目の入力値を(' ')区切りの配列に変換
   for (let i = 0; i < N; i++) {
      console.log(S[i]);  // N 個の要素を表示
   }
});
hogeちゃんの画像

lines[1] を半角スペース区切りの配列 に変換し S に保存。for文 で N  個の値を出力しています。

【STEP: 2】コード(2)

reader.on('close', () => {
   const S = lines[1].split(' ');
   S.forEach(s => {
      console.log(s);
   });
});
hogeちゃんの画像

各値を forEach() で出力したので 要素数 N は取得せずに 配列 S のみを生成しています。

【STEP: 3】コード (1)

reader.on('close', () => {
   const S = lines[0].split(' ');
   const N = Number(S.shift());  // S の先頭の値を切り取り、数値化して N に代入
   for (let i = 0; i < N; i++) {
      console.log(S[i]);  // S の各値を出力
   }
});
hogeちゃんの画像

入力は1行なので とりあえず半角スペース区切りの配列 に変換して S に保存。S の先頭の値を切り取り 数値化して N に代入。for文 で N 個 の S  の値を出力しました。

【STEP: 3】コード (2)

reader.on('close', () => {
   const S = lines[0].split(' ');
   S.shift();  // S の先頭の値を削除
   S.forEach(s => {
      console.log(s);  // S の各値を出力
   });
});
hogeちゃんの画像

forEach()を使えば配列の要素数に関わらず、全ての値にアクセスできるので、要素数 N を生成しなくても全ての値を出力できました。

【STEP: 4】コード (1)

reader.on('close', () => {
   const N = Number(lines[0]);
   const S = lines[1].split(' ');
   for (let i = 0; i < N; i++) {
      console.log(S[i]);
   }
});
hogeちゃんの画像
入力条件が変わってますけど 【STEP: 2】のコードと同じでOKでした。

【STEP: 4】コード (2)

reader.on('close', () => {
   const S = lines[1].split(' ');
   S.forEach(s => {
      console.log(s);
   });
});
hogeちゃんの画像
こちらも【STEP: 2】のコードと同じです。

【FINAL】コード (1)

reader.on('close', () => {
   const S = lines[0].split(' ');
   const N = Number(S.shift());
   for (let i = 0; i < N; i++) {
      console.log(S[i]);
   }
});
hogeちゃんの画像

【STEP: 3 】と同じコードで問題なく動作しました。

【FINAL】コード (2)

reader.on('close', () => {
   const S = lines[0].split(' ');
   S.shift();
   S.forEach(s => {
      console.log(s);
   });
});
hogeちゃんの画像

こちらも【STEP: 3】のコードと同じです。

コメント