前提
大きな目標:1つの銀行口座を管理するプログラムをJavaで作成したい(Eclipse)
プログラムの流れ:
①menu(A,W,D,S,E)を入力させる
②入力された値に応じてswitch文で処理
実現したいこと
①Ex0206.javaの33行目、37行目で入力されたnumberとnameの値を
39行目でインスタンス変数dataに格納
Java11 ファイル名:Ex0206.java
1 case 'A': 2 if (count == 1) { 3 System.out.println("口座は開設済みです"); 4 } else { 5 //口座番号を入力させる 6 System.out.print("口座番号>"); 732行目 line = reader.readLine(); 8 int number = Integer.parseInt(line); 9 //名義を入力させる 10 System.out.print("名義>"); 1137行目 String name = reader.readLine(); 12 //Bankクラスのコンストラクタを呼び出し、インスタンスを生成する 1339行目 Bank data = new Bank(number, name); 14 //口座がある状態にする 15 count = 1; 16 }
②79、80行目でdetaのnumberとnameを個別に表示させたい
Java11 ファイル名:Ex0206.java
1 case 'S': 2 if (count == 0) { 3 System.out.println("口座を開設しなければ操作できません"); 4 } else { 579行目 System.out.println("口座情報表示 口座番号: " + **data.**bankNumber() + 680行目 " 名義: " + **data.**bankName() + " 残高: " + **data.**bankMoney()); 7 } 8 break;
発生している問題・エラーメッセージ
dataを解決できません
該当のソースコード
自分で調べたことや試したこと
試したこと:swicth文に入る前にコンストラクタで初期化
エラーメッセージ:なし
実行結果:入力したnumberとnameが表示されない(初期値が表示)
原因:39行目のコンストラクタが機能しなくなった
使っているツールのバージョンなど補足情報
OS:Windows10
ツール:Eclipse
バージョン:Java11
下記にEx0206.javaとBank.Javaの全コードを記載しております。
長々とした質問になりましたが、
もしよろしければ、ご回答よろしくお願いいたします。
Java11 ファイル名:Ex0206.java
1package ex0206; 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6 7public class Ex0206 { 8 9 public static void main(String[] args) { 10 System.out.println("銀行口座管理プログラム"); 11 boolean judge = true; 12 //口座があるかないかを判断する変数 13 //count==1のとき口座あり、count==0のとき口座なし 14 int count = 0; 15 while (judge) { 16 System.out.println("A:新規開設 W:引き出し D:預け入れ S:口座情報 E:終了"); 17 System.out.print("メニュー>"); 18 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 19 try { 20 String line = reader.readLine(); 21 char menu = line.charAt(0); 22 23 switch (menu) { 24 case 'A': 25 if (count == 1) { 26 System.out.println("口座は開設済みです"); 27 } else { 28 //口座番号を入力させる 29 System.out.print("口座番号>"); 3032行目 line = reader.readLine(); 31 int number = Integer.parseInt(line); 32 //名義を入力させる 33 System.out.print("名義>"); 3437行目 String name = reader.readLine(); 35 //Bankクラスのコンストラクタを呼び出し、インスタンスを生成する 3639行目 Bank data = new Bank(number, name); 37 //口座がある状態にする 38 count = 1; 39 } 40 41 /*問題6においてはリストはいらない(登録口座が1つのため) 42 //Bank型のリストを作成する 43 List<Bank> bankData = new ArrayList<Bank>(); 44 //リストの中にデータ(口座番号、名義)を格納する 45 bankData.add(data); 46 */ 47 break; 48 49 case 'W': 50 if (count == 0) { 51 System.out.println("口座を開設しなければ操作できません"); 52 } else { 53 System.out.println("金額>"); 54 line = reader.readLine(); 55 int moneyDel = Integer.parseInt(line); 56 **data.**delMoney(moneyDel); 57 } 58 break; 59 60 case 'D': 61 if (count == 0) { 62 System.out.println("口座を開設しなければ操作できません"); 63 } else { 64 System.out.print("金額>"); 65 line = reader.readLine(); 66 int moneyAd = Integer.parseInt(line); 67 **data.**addMoney(moneyAd); 68 } 69 break; 70 71 case 'S': 72 if (count == 0) { 73 System.out.println("口座を開設しなければ操作できません"); 74 } else { 7579行目 System.out.println("口座情報表示 口座番号: " + **data.**bankNumber() + 7680行目 " 名義: " + **data.**bankName() + " 残高: " + **data.**bankMoney()); 77 } 78 break; 79 80 case 'E': 81 System.out.println("銀行口座管理プログラムを終了します"); 82 judge = false; 83 break; 84 85 default: { 86 System.out.println("A,W,D,S,Eのいずれかを入力してください"); 87 } 88 } 89 90 } catch (IOException e) { 91 System.out.println(e); 92 } catch (Exception e) { 93 System.out.println(e); 94 } 95 96 } 97 98 } 99 100}
Java11 ファイル名:Bank.java
1package ex0206; 2 3public class Bank { 4 private int number; 5 private String name; 6 private int money = 0; 7 8 Bank(int number, String name) { 9 this.number = number; 10 this.name = name; 11 } 12 13 int bankNumber() { 14 return this.number; 15 } 16 17 String bankName() { 18 return this.name; 19 } 20 21 int addMoney(int moneyAd) { 22 this.money = this.money + moneyAd; 23 return this.money; 24 } 25 26 int delMoney(int moneyDel) { 27 this.money = this.money - moneyDel; 28 return this.money; 29 } 30 31 int bankMoney() { 32 return this.money; 33 } 34 35}

回答1件
あなたの回答
tips
プレビュー