アカウントプログラムについて

解決済みの質問

アカウントプログラムについて

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

QNo.7187376

すぐに回答ほしいです

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

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

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • エクセルの関数について、変ですか? ...
  • insert into $DB (data1, data2) values (\"$data1\", \"$data2\")で変数扱いされません ...
  • 下記バグ("SQL:\"$sql\"の実行に失敗しました。")が表示されます ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら