質問: ### 前提・実現したいこと 研修で、Eclipseを使って施設予約システムを作っています。 言語はJavaです。 文系出身の完全初心者の為、至らない箇所が多々あると思われます。 回答も欲しいのは勿論ですが、考え方も併せて頂けると幸いです。 CSVファイルから登録者情報を呼び出して、サブクラスA(?)でログイン名とパスワードを抽出。 サブクラスBで入力を受付け、まず登録者かを判定。 次に管理者かユーザーかを判定した上で、それぞれのメニューへ(コンソールの下に書き足される)。 という第一段階で躓いています。 ### 発生している問題・エラーメッセージ ``` 文字数制限(それぞれ5~10字)でのエラー表示は出来たのですが、CSVファイルを参照しての絞込みができません。 ログイン名とパスワードは受け付けるのですが、 何を入力してもCSVファイルの一番上のアカウントでログインしてしまいます。 ``` ### 該当のソースコード ``` 今回は何処が悪いのか分からない為、全部上げさせてもらいました。 もっと理解していけば一つ二つで聞けるのでしょうが・・・ ソースデータ ``` ### 試したこと 恐らく、何処かの変数に一番上のアカウントが格納されてしまっているのだと思うのですが、 何処だかわかりません。 何分、初心者な為あまり出来ていないと思いますが、Eclipseの機能でエラーを探しました。 見つかったのはmainがあるクラスのログイン名を受け取る変数でしたが、ソース的にはエラーを吐いていませんでした。 ### 補足情報(言語/FW/ツール等のバージョンなど) 使用言語:Java ツール :Eclipse 質問者 :文系出身の新入社員
回答: findUserAccountメソッドの for文の中で必ずaccountDataを返しているからです。 (ソース内の※の部分) ``` //ユーザアカウント情報の検索を繰り返す for (String[] accountData : accountDataList) { //targetLoginName = 検索条件となるログイン名 String loginName = accountData[1]; //targetPassword = 検索条件となるパスワード String password = accountData[2]; // 引数のログイン名とパスワードが、取得したユーザアカウント情報の // ログイン名とパスワードとそれぞれ合致した場合 if (loginName.equals(targetLoginName) && password.equals(targetPassword)) { return accountData; } //※ここでは1人目のユーザーの情報が入っている。 return accountData; } ``` 受け取り側ではnullかどうか確認しているようなので、 nullでなくてログイン状態になってしまうのではないでしょうか?