• ベストアンサー

初歩でめんどくさい質問

すみません。rubyを学習したての者です。 以下のコードで構文エラーがでます。3つです。 どこが悪いのかまったくわかりません。 ------------------------------------------------------ puts 'じゃんけんゲーム開始' sleep 1 #プレイヤーのじゃんけん入力 puts '何を出しますか?' puts '1グー' puts '2チョキ' puts '3パー' input_value = gets #じゃんけんロボの処理 robo = rand(3) + 1 case robo when 1 puts 'ロボはグーを出した!' when 2 puts 'ロボはチョキを出した!' when 3 puts 'ロボはパーを出した!' end #じゃんけん結果判定 player = input_value.to_i case player when 1 puts 'あなたはグーを出した' case robo when 1 #ロボがグーなら puts '引き分けです' when 2 #ロボがチョキなら puts 'あなたの勝ちです' when 3 #ロボがパーなら puts 'あなたの負けです' end when 2 puts 'あなたはチョキを出した' case robo when 1 puts '引き分けです' when 2 puts 'あなたの勝ちです' when 3 puts 'あなたの負けです' end when 3 puts 'あなたはパーを出した' case robo when 1 puts 'あなたの勝ちです' when 2 puts 'あなたの負けです' when 3 puts '引き分けです' end   else #どの条件も成立しなかったとき puts 'あなたは何も出さなかった' puts 'あなたの負けです' end --------------------------------------------------- めんどくさいと思いますが、さらっと見て分かる方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

#2の方が書かれたとおり全角空白が原因でしょうね。 Rubyは全角文字も変数名等に使えるので、人間の手として3を入力した場合、「未定義の変数かメソッドの 全角空白 が現れた」というエラーになります。Rubyの処理系は、未定義の変数は実行時のエラーになるので、3を入れない限りエラーにならないというのが#1の方の実行結果だと思います。 NetBeansのような統合開発環境を使うと、実行前に未定義変数を検出する機能があります。

Armadillo5
質問者

お礼

全角空白が原因でした。 ありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • siffon9
  • ベストアンサー率64% (136/211)
回答No.2

NetBeansではエラーが3つ出ました。 「else #どの条件も成立しなかったとき」 の前の空白行に全角のスペースが入っていませんか?

Armadillo5
質問者

お礼

お返事遅くなりました。 そのとおりでした!ありがとうございます!

すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

どのようなエラーがでましたか? こちらで実行したときは、正常に動作しましたよ。 どの環境(OS)で、どのように実行しましたか? 実行したコマンド、操作内容等を補足して下さい。 こちらでは、windows-xp のコマンドプロンプトで、 ruby このスクリプト名 として実行しました。

すると、全ての回答が全文表示されます。

関連するQ&A