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

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

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

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

Q&A

解決済

1回答

4986閲覧

ruby Errno::EINVAL エラーになる

Masayuki.T

総合スコア8

Ruby

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

0グッド

0クリップ

投稿2018/05/28 10:15

編集2018/05/29 00:48

前提・実現したいこと

(例)Rubyで蔵書管理アプリケーションを作っています。
BookInfoクラスとBookInfoManagerクラスを使った蔵書管理アプリケーション(テキスト版)を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

1.蔵書データの登録
2.蔵書データの表示
9.終了
番号を選んでください(1,2,9):ex1401.rb:96:in gets': Invalid argument - <STDIN> (Errno::EINVAL) from ex1401.rb:96:in gets'
from ex1401.rb:96:in run' from ex1401.rb:123:in <main>'

#ソースコード
・(ruby 1.93)
・TeraPadを使い文字コードはUTF-8を使用しました。

Ruby

1# -*- coding: utf-8 -*- 2require 'date' 3 4class BookInfo 5 6 def initialize( title, author, page, publish_date ) 7 @title=title 8 @author=author 9 @page=page 10 @publish_date=publish_date 11 end 12 13 14attr_accessor :title, :author, :page, :publish_date 15 16 17def to_s 18 "#{@title}, #{@author}, #{@page}, #{@publish_date}" 19 end 20 21 22 23 def toFormattedString(sep="\n" ) 24 "書籍名: #{@title}#{sep}著者名: #{@author}#{sep}ページ数: #{@page}ページ#{sep}発刊日: #{@publish_date}#{sep}" 25 end 26 end 27 28 29 class BookInfoManager 30 def initialize 31 @book_infos={} 32 end 33 34 35 def setUp 36 37@book_infos["Yamada2005"]=BookInfo.new( 38"実践アジャイル ソフトウェア開発法とプロジェクト管理", 39"山田 正樹", 40 248, 41 Date.new(2005,1,25)) 42 43 @book_infos["Ooba2006"]=BookInfo.new( 44 "入門LEGO MINDSTORMS NXT レゴブロックで作る動くロボット", 45 "大庭 慎一郎", 46 164, 47 Date.new(2006, 12, 23)) 48end 49 50 def addBookInfo 51 52 book_info=BookInfo.new("","",0,Date.new) 53 54 print "\n" 55 print "キー:" 56 key=gets.chomp 57 print "書籍名:" 58 book_info.title=gets.chomp 59 print "著者名:" 60 book_info.author=gets.chomp 61 print "ページ数:" 62 book_info.page=gets.chomp.to_i 63 print "発刊年:" 64 year=gets.chomp.to_i 65 print "発刊月:" 66 month=gets.chomp.to_i 67 print "発刊日:" 68 day=gets.chomp.to_i 69 book_info.publish_date=Date.new(year, month, day) 70 71 @book_infos[key]=book_info 72 end 73 74 75 76 def listAllBookInfos 77 puts "\n----------------------" 78 @book_infos.each{|key,info| 79 print info.toFormattedString 80 puts "\n----------------------" 81 } 82 83 84end 85 86 87 def run 88 while true 89 90 print " 911.蔵書データの登録 922.蔵書データの表示 939.終了 94番号を選んでください(1,2,9):" 95 96 num=gets.chomp 97 case 98 when '1'==num 99 100 addBookInfo 101 when '2'==num 102 103 listAllBookInfos 104 when '9'==num 105 106 break; 107else 108 109 end 110 end 111 end 112 113 114end 115 116 117book_info_manager=BookInfoManager.new 118 119 120book_info_manager.setUp 121 122 123book_info_manager.run 124

試したこと

類似の問題がないか複数のサイトで検索しましたが出てきませんでした。
単純な打ち間違いがないか何度も確認しましたが、なかったです。
プログラミング自体初心者です。もしよければどこが間違っているのか教えて欲しいです。

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

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

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

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

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

raccy

2018/05/28 11:07

手元では現象が発生しませんでしたので環境依存と思われます。お使いのOS、Rubyをインストールした方法、ruby -vの出力結果、使用したターミナル(コマンドプロンプト、ターミナル、ssh接続ならそのソフト等)、ターミナルの文字コード(Windows-31JだとかUTF-8だとか)、ターミナルのシェルや何か特殊なソフトを入れていないか、などわかる範囲で良いですので、詳細に書いてみてください。なにかわかるかも知れません。
raccy

2018/05/28 11:08

また、Ruby1.9.3は非常に古く現在はサポートされていません。最新バージョンをインストールすることが可能であれば、最新バージョンでも発生するかどうかを試して見てください。
raccy

2018/05/28 11:10

最後に、コードの最初に「```Ruby」とだけ書いた行、そして最後に「```」とだけ書いた行を追加してください。シンタックスカラーが適用され、質問が大変読みやすくなります。その他はヘルプにあるMarkdownの書き方をお読みください。読みにくい質問はそれだけで回答が大変つきにくくなります。
guest

回答1

0

自己解決

Ruby の最新バージョンをインストールしたことで解決しました。

投稿2018/05/31 10:17

Masayuki.T

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問