解決済みの質問
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には、アカウント名、パスワードの順に入っています。
投稿日時 - 2011-12-13 12:59:10
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のバージョンも記述されたほうが
より正確な回答が期待できます。
投稿日時 - 2011-12-13 21:43:53
お礼
無事、うまくいきました。
ありがとうございました!
投稿日時 - 2011-12-14 15:28:04
0人が「このQ&Aが役に立った」と投票しています
OKWaveのオススメ
おすすめリンク