こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

java 会員登録プログラム

2番目の参照で困ってます。Member.java といったクラスファイルを使ってます。コンストラクタやゲッター、セッター等が入ってます。省略箇所有りですがどうぞ宜しくお願いします。
public class MemberSystem {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
//loopを使い随時メニュー表示
boolean loop = true;
while(loop){
System.out.println("");
System.out.println("ご希望のオプション番号を選択してください");
System.out.println("1>>登録 2>>参照 3>>検索 4>>削除 5>>保存 6>>読込 7>>終了");
String line = reader.readLine();
int n = Integer.parseInt(line);

//ArrayList<Member>型のインスタンスを作成し、ArrayList<Member>型の変数rに代入
ArrayList<Member> r = new ArrayList<Member>();
switch (n) {
case 1: System.out.println("登録>> 各情報を入力すると登録できます");

System.out.println("氏名");
String inputName = reader.readLine();
//エラーチェック 空入力
if(inputName.length() == 0){
System.out.println("空入力のため終了");
System.exit(0);
}
System.out.println("生年月日 例)2013/01/01");
String inputBirth = reader.readLine();
//エラーチェック 空入力
if(inputBirth.length() == 0){
System.out.println("空入力のため終了");
System.exit(0);
}
System.out.println("電話番号 例) 0901234567");
String inputTel = reader.readLine();
//エラーチェック 空入力
if(inputTel.length() == 0){
System.out.println("空入力のため終了");
System.exit(0);
}
//reader.redLineで取得したString型の情報を代入
r.add(new Member(inputName, inputBirth, inputTel));
System.out.println("下記、入力情報をストアし、会員ID番号を付加しました");

//入力情報と会員ID番号を表示
for(Member inputResult:r){
System.out.print(inputResult);
}
break;
case 2: System.out.println("参照>> ご希望の会員情報を表示します");
System.out.println("会員ID番号を入力してください 例)0001");
//キーボード入力からデータを呼び込む
String inputMemberID = reader.readLine();
//ここがうまくいきません。
for(Member inputResult :r) {
if(inputMemberID.equals(inputResult.getID())){
//データ取得 
System.out.println(inputResult);

//エラーチェック 空入力
}else if(inputMemberID.length() == 0){
System.out.println("空入力のため終了");
System.exit(0);
//エラーチェック 番号がない時や一致していない時
}else{
System.out.println("あなたの会員ID番号は該当しません");
System.exit(0);
}
}

break;
case 3: System.out.println("検索>> ご希望の会員を検索します 検索方法を番号で選択してください");
System.out.println("1>>氏名 2>>生年月日 3>>電話番号");
//switchを使い、検索選択肢を表示
String search = reader.readLine();
int x = Integer.parseInt(search);
switch (x) {
case 1: System.out.println("氏名");
String searchName = reader.readLine();
for(Member inName : r) {
if (searchName.equals(inName.getName())){
System.out.print(inName);
}

}
break;
case 2: System.out.println("生年月日");
String searchBirth = reader.readLine();
break;
default: System.out.println("電話番号");
String searchTel = reader.readLine();
break;

}

break;
case 4: System.out.println("削除>> ご希望の会員を削除します");

System.out.println("会員ID番号を入力してください 例)0001");
String deleteMemeb

投稿日時 - 2013-11-04 22:59:07

QNo.8334443

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

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

回答(1)

ANo.1

「参照」の処理ですが、順序を間違えています

【質問内容の処理順序】
1. 一行入力
2. 登録済みMemberを繰り返し処理
2.1. Member の ID と入力行が一致したら Member 出力
2.2. 入力内容のチェック
2.3. 一致が無いエラー判定

【正常な処理順序】
1. 一行入力
2. 入力内容のチェック
3. 登録済みMemberを繰り返し処理
3.1. Member の ID と入力行が一致したら Member 出力
4. 一致が無いエラー判定(3.1で一回も出力がない場合)

投稿日時 - 2013-11-05 00:48:38