重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

rubyでアカウントとパスワードを検証するプログラムを、ハッシュを使って作成しようと思っています。
そこで、if文を使って条件をわけようとしているのですが、うまくいきません。 自分なりに書いてはみたのですが間違っているようで、どこをどう直したらよいか教えていただきたいです!

$KCODE = "e"
hash_account = {}
fo = open("accountData.txt", "r")

i = 0
while(line = fo.gets)
ary = line.split
hash_account[ary[0]] = ary[1]
i = i + 1
end
fo.close

print "*** ログインしてください。自分のアカウント名とパスワードを入力してください。 ***\n"
print "アカウント:"
account = gets.chop
print "パスワード:"
password = gets.chop


if (hash_account[account] == password)
print "ようこそ、", account,"さん。それではゲームを始めましょう。\n"
elsif
print "パスワードが間違っているようです。\n"
else
print account,"というアカウントはありません。\n"
end

ちなみに、accountData.txtには、アカウント名、パスワードの順に入っています。

A 回答 (1件)

1:if (hash_account[account] == password)


2:rint "ようこそ、", account,"さん。それではゲームを始めましょう。\n"
3:elsif
4:print "パスワードが間違っているようです。\n"
5:else
6:print account,"というアカウントはありません。\n"
7:end

上記の3行目のelsif を
elsif hash_account.has_key? account

に変えてください。
そうすると正しく動きます。

尚、今後質問される場合はOS、rubyのバージョンも記述されたほうが
より正確な回答が期待できます。
    • good
    • 0
この回答へのお礼

無事、うまくいきました。

ありがとうございました!

お礼日時:2011/12/14 15:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!