
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には、アカウント名、パスワードの順に入っています。

No.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のバージョンも記述されたほうが
より正確な回答が期待できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
switch文のエラーについて
-
Pythonでコンソールをクリアす...
-
16進の10進変換について
-
関数「exists」と「defined」の...
-
$(ドル)の記号を表示したいの...
-
[Ruby] irbにおける文字化け
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
テーブル内でドロップダウンメ...
-
VB6で、長い時間かかる処理...
-
FindFirst を複数条件で検索
-
構造体の各データの表示につい...
-
formで特定のinputを送信しない...
-
ACCESS テキストボックスを隙...
-
MSXMLでの属性の存在確認法
-
セレクトメニューで2つの項目...
-
[python] 文字列を変数名として...
-
処理終了後、他のページへジャ...
-
【C#】数値の範囲チェックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
I2C接続のLCDディスプレイを使う
-
Pythonでコンソールをクリアす...
-
pythonの*
-
c言語 16進数の2進数への変換
-
条件文の扱い方について
-
関数「exists」と「defined」の...
-
【至急!!!】python言語で本を見...
-
ファイルに書き込む
-
EUCで保存されたスクリプトにて...
-
Perl・正規表現が分かりません
-
改行
-
perlの型と8進数、10進数
-
ソートを利用して文字を昇順で...
-
配列 各項目を$n倍するプログ...
-
表という文字の扱いについて
-
シェルスクリプト+perl
-
ポーリングとHTMLデータのリロ...
-
awkの正規表現での最左最短マッ...
おすすめ情報