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

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

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

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

Q&A

解決済

1回答

2752閲覧

蔵書管理のアプリケーションのプログラムでエラーがでる。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2017/01/04 13:56

###前提・実現したいこと
蔵書管理のアプリケーションのプログラムを完成させたいのですが、エラーが出てしまい動きません。
###発生している問題・エラーメッセージ
ex1041.rb:55:in addBookInfo': undefined method to' for "1":String (NoMethodError)
from ex1041.rb:77:in run' from ex1041.rb:88:in class:BookInfoManager'
from ex1041.rb:21:in `<main>'

蔵書データの登録に進み、発刊日を入力すると上記のエラーが出ます。
###該当のソースコード

-- coding: utf-8 --

require 'date'

class BookInfo
def initialize( title, author, page, publish_date )
@title = title
@author = author
@page = page
@publish_date = publish_date
end

attr_accessor :title, :author, :page, :publish_date
def to_s
"#{@title}, #{@author}, #{@page}, #{@publish_date}"
end

def toFormattedString( sep = "\n" )
"書籍名: #{@title}#{sep}著書名: #{author}#{sep}ページ数: #{@page}ぺ―ジ#{sep}発刊日: #{@publish_date}#{sep}"
end
end
class BookInfoManager
def initialize
@book_infos = {}
end

def setUp
@book_infos["Yamada2005"] = BookInfo.new(
"実践アジャイル ソフトウェア開発法とプロジェクト管理",
"山田 正樹",
248,
Date.new( 2005, 1, 25 ) )
@book_infos["Ooba2006"] = BookInfo.new(
"入門LEGO MINDSTORMS NXT レゴブロックで動くロボット",
"大庭 慎一郎",
164,
Date.new( 2006, 12, 23 ) )
end

def addBookInfo
book_info = BookInfo.new( "", "", 0, Date.new )
print "\n"
print "キー: "
key = gets.chomp
print "書籍名: "
book_info.title = gets.chomp
print "著者名: "
book_info.author = gets.chomp
print "ページ数: "
book_info.page = gets.chomp.to_i
print "発刊年: "
year = gets.chomp.to_i
print "発刊月: "
month = gets.chomp.to_i
print "発刊日: "
day = gets.chomp.to._i
book_info.publish_date = Date.new( year, month, day )
@book_infos[key] = book_info
end
def listAllBookInfos
puts "\n---------------------"
@book_infos.each { |key, info|
print info.toFormattedString
puts "\n----------------------------"
}
end
def run
while true
print "
1.蔵書データの登録
2.蔵書データの表示
9.終了
番号を選んでください(1,2,9) :"

num = gets.chomp case when '1' == num addBookInfo when '2' == num listAllBookInfos when '9' == num break; else end end

end
book_info_manager = BookInfoManager.new
book_info_manager.setUp
book_info_manager.run
end
##最後に
かなり時間をかけてエラーを潰してきましたがこれだけはわかりません。
アドバイスお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Ruby

1print "発刊日: " 2day = gets.chomp.to._i

.to_iの間違いが原因ではと私個人は予想します
以下、コピペ

Ruby

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

投稿2017/01/04 14:57

編集2017/01/04 15:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/01/04 15:29

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問