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

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

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

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

Q&A

解決済

5回答

6448閲覧

Ruby初学者です。作りながら学ぶRubyでのエラーに関して。

techtottori

総合スコア26

Ruby

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

0グッド

0クリップ

投稿2016/06/06 06:58

#入力したコード

#表示したい蔵書データを作成する
pages = 248
price = 2500
tax = 0.05
purchase_price = price * (1 + tax)

#蔵書データを表示する
puts "ページ数: " + pages.to_s + "ページ"
puts "本体数: " + price.to_s + "円"
puts "購入費用: " + purchase_price.to_s + "円"

#出力はこのようにしたいです。
ページ数: 248ページ
本体価格: 2500円
購入費用: 2625.0円

エラーメッセージ

rb:11: syntax error, unexpected tIDENTIFIER, expecting end-of-input

###該当のソースコード
ここに問題があるとターミナルに表示が出ました。
puts "購入費用: " + purchase_price.to_s + "円"

###補足情報(言語/FW/ツール等のバージョンなど)
Ruby 2.30 Mac OS 10.11.5

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

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

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

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

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

guest

回答5

0

#を全角で書いているのは、地の文を半角 # で始めると見出しになっているのに気づいたからかと。
もうちょっと気づいて、コード記法で書けば良かったんだけど。アイコンの</>をクリックして。

syntax error, unexpected tIDENTIFIER, expecting end-of-input

の原因は、行末の全角空白では無いですか?Rubyでは全角文字は空白であろうと識別子になります。
全角空白がそれと分かるようなエディタを使いましょう。

投稿2016/06/06 13:59

otn

総合スコア84533

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

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

0

maisumakun さんの回答にあるように #(全角) を #(半角) にするだけで、
正常に実行が出来ますね。

イメージ説明

私なら、つぎのように書きます。

# 表示したい蔵書データを作成する pages = 248 price = 2500 tax = 0.05 purchase_price = price * (1 + tax) # 蔵書データを表示する puts "ページ数: #{pages}ページ" puts "本体数: #{price}円" puts "購入費用: #{purchase_price}円"

イメージ説明

投稿2016/06/06 12:29

katoy

総合スコア22324

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

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

techtottori

2016/06/06 13:28

ご質問お答えいただいてありがとうございます。 申し訳ありません。#の全角のなのですが、投稿の際は、全角にしなければ反映されなかったので、全角させていただきました。 しっかり半角でプログラミングしております。 どうやら最後の行を改行していなかったのが一番の原因だったようです。
guest

0

purchase_priceは、整数(2500)と浮動小数点数(1+0.05)の積なので、double型になります。

double型の値を文字列(10進数の数)に変換すると小数点以下の桁数が非常に多い場合があります。
2進数で表した浮動小数点数のビット数は有限なのですが、仮数部が52ビットですから多いと10進数で表現すると数字が16桁ぐらいも必要になります。(小数点の上と下の桁数を合わせると16桁ぐらいになる)

rb:11: syntax error, unexpected tIDENTIFIER, expecting end-of-input
というエラーは、この質問の場合は
「想定以上に桁数が多いです(途中で終わりになると思っていたのに(泣き))」
というものです。

この問題は、to_sではなく、以下のようにprintfでフォーマット指定することで解決できますよ。

printf("購入費用: %f 円\n", purchase_price)

投稿2016/06/06 08:49

coco_bauer

総合スコア6915

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

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

techtottori

2016/06/06 13:31

ご質問お答えいただいてありがとうございます。 どうやら最後の行を改行していなかったのが一番の原因だったようです。 ご回答も参考にさせていただきます。 おかげさまでRubyの学習が楽しくなってきました。
guest

0

ベストアンサー

エラーメッセージは「EOF(ファイルの終わり)を期待していたのにtとかいう予期せぬIDENTIFIERが来たよ!」と言っています。

ruby

1puts "購入費用: " + purchase_price.to_s + "円"

の後に改行を一行入れてみてはどうでしょう。

投稿2016/06/06 07:49

yohira0616

総合スコア257

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

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

techtottori

2016/06/06 13:30

エラーメッセージの分かりやすい解説ありがとうございます。 おかげさまで解決することができましたので、ベストアンサーにさせていただきました。
guest

0

コメントのが全角となってますが、半角にしても同じような挙動になりますでしょうか。

投稿2016/06/06 07:28

maisumakun

総合スコア145183

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

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

techtottori

2016/06/06 13:29

ご質問お答えいただいてありがとうございます。 申し訳ありません。#の全角のなのですが、投稿の際は、全角にしなければ反映されなかったので、全角させていただきました。 しっかり半角でプログラミングしております。 どうやら最後の行を改行していなかったのが一番の原因だったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問