質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

4710閲覧

rubyでgetsを使ったwhileから抜ける方法

tttd

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2016/12/24 11:47

ruby

1n = 0 2num = 1 3ary = [] 4 5while true 6 ary[n] = gets.chomp 7 print "num:#{num}" 8 print "text:#{ary[n]}" 9 n+=1 10 num+=1 11end

上記のように書きたいのですがこれだとwhileからctrl+Dで抜けることができません
どうすればいいでしょうか

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

最小限の修正を行うと、こんな感じで。

Ruby

1n = 0 2num = 1 3ary = [] 4 5while line = gets 6 ary[n] = line.chomp 7 print "num:#{num}" 8 print "text:#{ary[n]}" 9 n+=1 10 num+=1 11end

投稿2016/12/24 11:57

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな風に書くこともできます。
xx.rb

ruby

1ary = STDIN.each_line.map.with_index do |line, idx| 2 str = line.chomp 3 puts "num:#{idx + 1} text:#{str}" 4 str 5 end 6p ary

実行例

$ ruby xx.rb asdf num:1 text:asdf qwer num:2 text:qwer // この後に CTRL-D を押下する ["asdf", "qwer"]

この方法では、ブロックの中に ary は現れません。
質問文にコードに現れている n や num の変数も不要になります。

投稿2016/12/31 00:25

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

break if STDIN.eof?

投稿2016/12/24 11:51

tttd

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問