質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

解決済

Java11 Eclipse エラー:dataを解決できません 

saichi
saichi

総合スコア1

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1回答

1評価

0クリップ

121閲覧

投稿2022/05/15 01:56

編集2022/05/16 19:26

前提
大きな目標:1つの銀行口座を管理するプログラムをJavaで作成したい(Eclipse)
プログラムの流れ:
①menu(A,W,D,S,E)を入力させる
②入力された値に応じてswitch文で処理

実現したいこと
①Ex0206.javaの33行目、37行目で入力されたnumberとnameの値を
39行目でインスタンス変数dataに格納

Java11 ファイル名:Ex0206.java

case 'A': if (count == 1) { System.out.println("口座は開設済みです"); } else { //口座番号を入力させる System.out.print("口座番号>"); 32行目 line = reader.readLine(); int number = Integer.parseInt(line); //名義を入力させる System.out.print("名義>"); 37行目 String name = reader.readLine(); //Bankクラスのコンストラクタを呼び出し、インスタンスを生成する 39行目 Bank data = new Bank(number, name); //口座がある状態にする count = 1; }

②79、80行目でdetaのnumberとnameを個別に表示させたい

Java11 ファイル名:Ex0206.java

case 'S': if (count == 0) { System.out.println("口座を開設しなければ操作できません"); } else { 79行目 System.out.println("口座情報表示 口座番号: " + **data.**bankNumber() + 80行目 " 名義: " + **data.**bankName() + " 残高: " + **data.**bankMoney()); } break;

発生している問題・エラーメッセージ
dataを解決できません

該当のソースコード

自分で調べたことや試したこと
試したこと:swicth文に入る前にコンストラクタで初期化
エラーメッセージ:なし
実行結果:入力したnumberとnameが表示されない(初期値が表示)
原因:39行目のコンストラクタが機能しなくなった

使っているツールのバージョンなど補足情報
OS:Windows10
ツール:Eclipse
バージョン:Java11

下記にEx0206.javaとBank.Javaの全コードを記載しております。

長々とした質問になりましたが、
もしよろしければ、ご回答よろしくお願いいたします。

Java11 ファイル名:Ex0206.java

package ex0206; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Ex0206 { public static void main(String[] args) { System.out.println("銀行口座管理プログラム"); boolean judge = true; //口座があるかないかを判断する変数 //count==1のとき口座あり、count==0のとき口座なし int count = 0; while (judge) { System.out.println("A:新規開設 W:引き出し D:預け入れ S:口座情報 E:終了"); System.out.print("メニュー>"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); char menu = line.charAt(0); switch (menu) { case 'A': if (count == 1) { System.out.println("口座は開設済みです"); } else { //口座番号を入力させる System.out.print("口座番号>"); 32行目 line = reader.readLine(); int number = Integer.parseInt(line); //名義を入力させる System.out.print("名義>"); 37行目 String name = reader.readLine(); //Bankクラスのコンストラクタを呼び出し、インスタンスを生成する 39行目 Bank data = new Bank(number, name); //口座がある状態にする count = 1; } /*問題6においてはリストはいらない(登録口座が1つのため) //Bank型のリストを作成する List<Bank> bankData = new ArrayList<Bank>(); //リストの中にデータ(口座番号、名義)を格納する bankData.add(data); */ break; case 'W': if (count == 0) { System.out.println("口座を開設しなければ操作できません"); } else { System.out.println("金額>"); line = reader.readLine(); int moneyDel = Integer.parseInt(line); **data.**delMoney(moneyDel); } break; case 'D': if (count == 0) { System.out.println("口座を開設しなければ操作できません"); } else { System.out.print("金額>"); line = reader.readLine(); int moneyAd = Integer.parseInt(line); **data.**addMoney(moneyAd); } break; case 'S': if (count == 0) { System.out.println("口座を開設しなければ操作できません"); } else { 79行目 System.out.println("口座情報表示 口座番号: " + **data.**bankNumber() + 80行目 " 名義: " + **data.**bankName() + " 残高: " + **data.**bankMoney()); } break; case 'E': System.out.println("銀行口座管理プログラムを終了します"); judge = false; break; default: { System.out.println("A,W,D,S,Eのいずれかを入力してください"); } } } catch (IOException e) { System.out.println(e); } catch (Exception e) { System.out.println(e); } } } }

Java11 ファイル名:Bank.java

package ex0206; public class Bank { private int number; private String name; private int money = 0; Bank(int number, String name) { this.number = number; this.name = name; } int bankNumber() { return this.number; } String bankName() { return this.name; } int addMoney(int moneyAd) { this.money = this.money + moneyAd; return this.money; } int delMoney(int moneyDel) { this.money = this.money - moneyDel; return this.money; } int bankMoney() { return this.money; } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

YT0014

2022/05/15 02:27

コード内のインデントが正確ではないので、修正してください。この問題を解決するのに役立つ修正となります。 その上で、変数のスコープを意識して、コードを見直して下さい。
saichi

2022/05/15 03:56 編集

Ex0206.javaとBank.javaのインデントを修正しました。 変数のスコープを意識して行ったことは以下の2つです。 ①switch文の外側にインスタンスを生成する ②各条件ごとにコンストラクタを呼び出す その結果、エラー自体はなくなりましたが、 79行目、80行目における表示は正しいものにはなりませんでした。 具体例:  case 'A'で入力したnumber=012345とname=SASAKI)が  case 'S'において"口座情報表示 口座番号: 0 名義: null 残高: 0"と表示されます。 理想は"口座情報表示 口座番号: 012345 名義: SASAKI 残高: 0"と表示されることです。
YT0014

2022/05/15 04:01 編集

この欄は「質問への追記・修正依頼」ですので、ご対応に関しましては、質問文の編集にてお願いいたします。 質問文の直後、この欄の直上に、「編集」があります。
saichi

2022/05/15 04:03

ご返信ありがとうございます。 質問文を修正いたしました。
YT0014

2022/05/15 04:16

デバッグ実行で、32行目辺りからステップ実行を行い、変数name、bank.nameが変化を確認して、実際に起こっていることを把握するのが良いかと思われます。
saichi

2022/05/16 10:16

ご連絡ありがとうございます。 解決できました! 丁寧に問題を解決する過程を教えてくださり、ありがとうございます。 今後、プログラムで詰まった時には、今回教えてくださったやり方を使いたいと思います。 お世話になりました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。