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

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

ただいまの
回答率

90.33%

  • Java

    14431questions

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

【至急】javaの課題でエラーが消えずコンパイルが通りません。

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 895

mitchy.6

score 4

前提・実現したいこと

学校で銀行口座を作ると言う課題が出されているのですが、一個のエラーがどうやっても消えず悩んでいます。
言語はjavaです。
課題内容は

(1) このプログラムは,次のコマンドを提供する.
新規口座 … プログラムが起動されたときは,口座リストは空である.新規口座コマンドは新規に口座を開設し,その残高を0とする.
口座解約 … 口座名で指定される口座を解約し,口座情報を口座リストから削除する.解約できる口座は,残高が0のものに限る.
預金 … 口座名で指定される口座に指定された額を預金する.
引き出し … 口座名で指定される口座から指定された額を引き出す.
残高照会 … 口座名で指定される口座の残高を表示する.
(2) プログラムは次の場合エラーメッセージを出力する.
新規口座コマンド
・口座リストにある口座名で再び口座を開こうとしたとき
・20を超える口座を開こうとしたとき
口座解約コマンド
・残高が0でない口座を解約しようとしたとき
・口座リストにない口座名が指定されたとき
預金コマンド
・0以下の額を預金しようとしたとき
・口座リストにない口座名が指定されたとき
引き出しコマンド
・預金残高を越える額を引き出そうとしたとき
・口座リストにない口座名が指定されたとき
・0以下の額を引き出そうとしたとき
残高照会コマンド
・口座リストにない口座名が指定されたとき

(3) 作成にあたっては次の点に注意しなさい.
作成するクラス名はBankAppletとする.
注意しないとinitメソッドが大変大きくなり,デバッグがしにくくなる.各自でinitメソッドを複数のprivateなメソッドに分割するよう設計しなさい.
アプレットのソースコード中に,メソッド分割の理由と,分割方針がわかるようなコメントを記述すること.
分割した各メソッドごとに,そのメソッドの機能引数がある場合は,各引数の意味戻り値がある場合は,戻り値の意味をコメントに記述すること.
変数は,インスタンス変数にする必要があるものと,局所変数でよいものの2通りがある.インスタンス変数は,必要なものだけに限定すること.
変数やメソッドは,publicにする必要があるものと,privateでよいものの2通りがある.publicは必要なものだけに限定すること.

になります。

発生している問題・エラーメッセージ

BankApplet.java:27: エラー: シンボルを見つけられません
    private Bank bankApplet;
            ^
  シンボル:   クラス Bank
  場所: クラス BankApplet
エラー1

該当のソースコード

import java.applet.Applet; //import文
import java.awt.Label;
import java.awt.Button;
import java.awt.Panel;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.*;
import java.awt.TextField;
import java.awt.CardLayout;



public class BankApplet extends Applet implements ActionListener{
    private Button button1,button2,button3,button4,button5;
    private Label label1_me,label2_me,kuuhaku;
    private Panel menuPanel;
    private Panel openPanel;
    private Button button1_op,button2_op;
    private Label label1_op,label2_op,name_op;
    private TextField tf_op=new TextField("",20);
    private CardLayout bank;
    private Panel bankPanel;
    private Bank bankApplet;



//387行目
  public void init(){
        menu();
        open();
        close();
        withdraw();
        deposit();
        balance();

        bankPanel=new Panel();
        bank=new CardLayout();
        bankPanel.setLayout(bank);
        bankPanel.add("1",menuPanel);
        bankPanel.add("2",openPanel);
        bankPanel.add("3",closePanel);
        bankPanel.add("4",depositPanel);
        bankPanel.add("5",withdrawPanel);
        bankPanel.add("6",balancePanel);

        this.add(bankPanel);
    }
    public void actionPerformed(ActionEvent e){
        /*bankApplet=new Bank();*/
        if(e.getSource() == button1){// menu -> open
            label2_op.setText("開設する口座名を指定して下さい");
            bank.show(bankPanel,"2");

        }
        if(e.getSource() == button2){// menu -> close
            label2_cl.setText("解約する口座名を指定して下さい");
            bank.show(bankPanel,"3");
        }
        if(e.getSource() == button3){// menu -> deposit
            label2_de.setText("預金する口座名と金額を指定して下さい");
            bank.show(bankPanel,"4");
        }
        if(e.getSource() == button4){// menu -> withdraw
            label2_wi.setText("引き出しする口座名と金額を指定して下さい");
            bank.show(bankPanel,"5");
        }
        if(e.getSource() == button5){// menu -> balance
            label2_ba.setText("残高照会する口座名を指定して下さい");
            bank.show(bankPanel,"6");
        }
        if(e.getSource() == button1_op){//open ok
            String str=tf_op.getText();
            if(str.equals("")){
                label2_op.setText("記入すべき所が空白です");
            }
            else{
                int result = bankApplet.doOpen(str);//戻り値0 アカウント作成成功
                if(result == 0){
                    bank.show(bankPanel,"1");
                    tf_op.setText("");
                    label2_me.setText("口座が作成されました");
                }
                else if(result==-6){
                    label2_op.setText("口座が20コあるため作成できません");
                }
                else if(result==-5){
                    label2_op.setText("同名のものが存在します");
                }
            }
        }
        if(e.getSource() == button2_op){//open cancel
            label2_me.setText("希望の選択をクリック!");
            tf_op.setText("");
            bank.show(bankPanel,"1");
        }



        if(e.getSource() == button1_cl){//close 削除
            String str=tf_cl.getText();
            if(str.equals("")){
                label2_op.setText("記入すべき所が空白です");
            }
            else{
                int result = bankApplet.doClose(str);//戻り値0 アカウント作成成功
                if(result == 0){
                    bank.show(bankPanel,"1");
                    tf_cl.setText("");
                    label2_me.setText("口座が削除されました");
                }
                else if(result==-5){
                    label2_cl.setText("口座がないため削除できません");
                }
                else if(result==-1){
                    label2_cl.setText("残高が0円ではありません");
                }
            }
        }
        if(e.getSource() == button2_cl){//close cancel
            label2_me.setText("希望の選択をクリック!");
            tf_cl.setText("");
            bank.show(bankPanel,"1");
        }




        if(e.getSource()==button1_wi){// withdraw  ok
            String str1=tf_wi.getText();
            String str2=tf2_wi.getText();
            if(str1.equals("") || str2.equals("")){
                label2_wi.setText("記入すべき所が空白です");
            }
            else{
                int result =bankApplet.doWithdraw(str1,str2);//戻り値0 引き出し
                if(result == 0){
                    bank.show(bankPanel,"1");
                    tf_wi.setText("");
                    tf2_wi.setText("");
                    label2_me.setText("正常に引き出されました");
                }
                else if(result==-1){
                    label2_wi.setText("預金残高を超えています");
                }
                else if(result==-4){
                    label2_wi.setText("金額が整数ではありません");
                }
                else if(result==-3){
                    label2_wi.setText("0以下のお金は引き出せません");
                }
                else if(result==-5){
                    label2_wi.setText("口座が存在しません");
                }
            }
        }
        if(e.getSource() == button2_wi){//withdraw cancel
            label2_me.setText("希望の選択をクリック!");
            tf_wi.setText("");
            tf2_wi.setText("");
            bank.show(bankPanel,"1");
        }





        if(e.getSource()==button1_de){//deposit ok
            String str1=tf_de.getText();
            String str2=tf2_de.getText();
            if(str1.equals("") || str2.equals("")){
                label2_de.setText("記入すべき所が空白です");
            }
            else{
                int result = bankApplet.doDeposit(str1,str2);//戻り値0 アカウント作成成功
                if(result == 0){
                    bank.show(bankPanel,"1");
                    tf_de.setText("");
                    tf2_de.setText("");
                    label2_me.setText("入金できました");
                }
                else if(result==-3){
                    label2_de.setText("0以下のお金は入金できません");
                }
                else if(result==-4){
                    label2_de.setText("金額が整数ではありません");
                }
                else if(result==-5){
                    label2_de.setText("口座が存在しません");
                }
            }
        }

        if(e.getSource() == button2_de){//deposit cancel
            label2_me.setText("希望の選択をクリック!");
            tf_de.setText("");
            tf2_de.setText("");
            bank.show(bankPanel,"1");
        }
        if(e.getSource() == button1_ba){//balance ok
            String str=tf_ba.getText();
                if(str.equals("")){
                    label2_ba.setText("記入すべき所が空白です");
                }
                else{
                    int result=bankApplet.doBalance(str);
                    if(result >= 0){
                        label2_ba.setText("残高は"+result+"円です");
                        tf_ba.setText("");

                    }
                    else if(result==-5){
                        label2_ba.setText("口座が存在しません");
                    }
                }
        }


        if(e.getSource() == button2_ba){//balance cancel
            label2_me.setText("希望の選択をクリック!");
            tf_ba.setText("");
            bank.show(bankPanel,"1");

        }
    }
}

試したこと

private Bank bankApplet = new Bank();
にしたりもしたが、エラーが増えるだけでした。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2017/01/23 13:46

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 3

+3

BankApplet.java:27: エラー: シンボルを見つけられません
private Bank bankApplet;
^
シンボル:   クラス Bank
場所: クラス BankApplet

このメッセージのとおり、 Bank というクラスの定義が見つからないのだと思いますが、 doOpen, doClose などのメソッドを持つ Bank クラスをコーディングする必要があるのではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

Bankという名前のクラスを作成するか、importする必要があります。
現時点では、Bankクラスをどこにも定義されていないため現在のエラーが出ていると思われます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

コンパイルだけはできるようにしたのが以下です

import java.awt.Button;
import java.awt.Panel;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.*;
import java.awt.TextField;
import java.awt.CardLayout;
import java.applet.Applet; //import文
import java.awt.Label;


public class BankApplet extends Applet implements ActionListener {
    private Button button1, button2, button3, button4, button5;
    private Label label1_me, label2_me, kuuhaku;
    private Panel menuPanel;
    private Panel openPanel;
    private Panel closePanel;
    private Panel depositPanel;
    private Panel withdrawPanel;
    private Panel balancePanel;
    private Button button1_op, button2_op, button1_cl, button1_wi, button1_de,
            button2_ba, button1_ba, button2_de, button2_wi, button2_cl;
    private Label label1_op, label2_op, name_op, label2_cl, label2_de,
            label2_wi, label2_ba;
    private TextField tf_op = new TextField("", 20);
    private TextField tf_ba = new TextField("", 20);
    private TextField tf2_da = new TextField("", 20);
    private TextField tf_da = new TextField("", 20);
    private TextField tf2_de = new TextField("", 20);
    private TextField tf_de = new TextField("", 20);
    private TextField tf2_wi = new TextField("", 20);
    private TextField tf_wi = new TextField("", 20);
    private TextField tf_cl = new TextField("", 20);

    private CardLayout bank;
    private Panel bankPanel;
    private Bank ams;

    // 387行目


    void menu() {
    };

    void open() {
    };

    void close() {
    };

    void withdraw() {
    };

    void deposit() {
    };

    void balance() {
    };

    public void init() {
        menu();
        open();
        close();
        withdraw();
        deposit();
        balance();

        bankPanel = new Panel();
        bank = new CardLayout();
        bankPanel.setLayout(bank);
        bankPanel.add("1", menuPanel);
        bankPanel.add("2", openPanel);
        bankPanel.add("3", closePanel);
        bankPanel.add("4", depositPanel);
        bankPanel.add("5", withdrawPanel);
        bankPanel.add("6", balancePanel);

        this.add(bankPanel);
    }

    public void actionPerformed(ActionEvent e) {
        /* Bank=new Bank(); */
        if (e.getSource() == button1) {// menu -> open
            label2_op.setText("開設する口座名を指定して下さい");
            bank.show(bankPanel, "2");

        }
        if (e.getSource() == button2) {// menu -> close
            label2_cl.setText("解約する口座名を指定して下さい");
            bank.show(bankPanel, "3");
        }
        if (e.getSource() == button3) {// menu -> deposit
            label2_de.setText("預金する口座名と金額を指定して下さい");
            bank.show(bankPanel, "4");
        }
        if (e.getSource() == button4) {// menu -> withdraw
            label2_wi.setText("引き出しする口座名と金額を指定して下さい");
            bank.show(bankPanel, "5");
        }
        if (e.getSource() == button5) {// menu -> balance
            label2_ba.setText("残高照会する口座名を指定して下さい");
            bank.show(bankPanel, "6");
        }
        if (e.getSource() == button1_op) {// open ok
            String str = tf_op.getText();
            if (str.equals("")) {
                label2_op.setText("記入すべき所が空白です");
            } else {
                int result = ams.doOpen(str);// 戻り値0 アカウント作成成功
                if (result == 0) {
                    bank.show(bankPanel, "1");
                    tf_op.setText("");
                    label2_me.setText("口座が作成されました");
                } else if (result == -6) {
                    label2_op.setText("口座が20コあるため作成できません");
                } else if (result == -5) {
                    label2_op.setText("同名のものが存在します");
                }
            }
        }
        if (e.getSource() == button2_op) {// open cancel
            label2_me.setText("希望の選択をクリック!");
            tf_op.setText("");
            bank.show(bankPanel, "1");
        }

        if (e.getSource() == button1_cl) {// close 削除
            String str = tf_cl.getText();
            if (str.equals("")) {
                label2_op.setText("記入すべき所が空白です");
            } else {
                int result = ams.doClose(str);// 戻り値0 アカウント作成成功
                if (result == 0) {
                    bank.show(bankPanel, "1");
                    tf_cl.setText("");
                    label2_me.setText("口座が削除されました");
                } else if (result == -5) {
                    label2_cl.setText("口座がないため削除できません");
                } else if (result == -1) {
                    label2_cl.setText("残高が0円ではありません");
                }
            }
        }
        if (e.getSource() == button2_cl) {// close cancel
            label2_me.setText("希望の選択をクリック!");
            tf_cl.setText("");
            bank.show(bankPanel, "1");
        }

        if (e.getSource() == button1_wi) {// withdraw ok
            String str1 = tf_wi.getText();
            String str2 = tf2_wi.getText();
            if (str1.equals("") || str2.equals("")) {
                label2_wi.setText("記入すべき所が空白です");
            } else {
                int result = ams.doWithdraw(str1, str2);// 戻り値0 引き出し
                if (result == 0) {
                    bank.show(bankPanel, "1");
                    tf_wi.setText("");
                    tf2_wi.setText("");
                    label2_me.setText("正常に引き出されました");
                } else if (result == -1) {
                    label2_wi.setText("預金残高を超えています");
                } else if (result == -4) {
                    label2_wi.setText("金額が整数ではありません");
                } else if (result == -3) {
                    label2_wi.setText("0以下のお金は引き出せません");
                } else if (result == -5) {
                    label2_wi.setText("口座が存在しません");
                }
            }
        }
        if (e.getSource() == button2_wi) {// withdraw cancel
            label2_me.setText("希望の選択をクリック!");
            tf_wi.setText("");
            tf2_wi.setText("");
            bank.show(bankPanel, "1");
        }

        if (e.getSource() == button1_de) {// deposit ok
            String str1 = tf_de.getText();
            String str2 = tf2_de.getText();
            if (str1.equals("") || str2.equals("")) {
                label2_de.setText("記入すべき所が空白です");
            } else {
                int result = ams.doDeposit(str1, str2);// 戻り値0 アカウント作成成功
                if (result == 0) {
                    bank.show(bankPanel, "1");
                    tf_de.setText("");
                    tf2_de.setText("");
                    label2_me.setText("入金できました");
                } else if (result == -3) {
                    label2_de.setText("0以下のお金は入金できません");
                } else if (result == -4) {
                    label2_de.setText("金額が整数ではありません");
                } else if (result == -5) {
                    label2_de.setText("口座が存在しません");
                }
            }
        }

        if (e.getSource() == button2_de) {// deposit cancel
            label2_me.setText("希望の選択をクリック!");
            tf_de.setText("");
            tf2_de.setText("");
            bank.show(bankPanel, "1");
        }
        if (e.getSource() == button1_ba) {// balance ok
            String str = tf_ba.getText();
            if (str.equals("")) {
                label2_ba.setText("記入すべき所が空白です");
            } else {
                int result = ams.doBalance(str);
                if (result >= 0) {
                    label2_ba.setText("残高は" + result + "円です");
                    tf_ba.setText("");

                } else if (result == -5) {
                    label2_ba.setText("口座が存在しません");
                }
            }
        }

        if (e.getSource() == button2_ba) {// balance cancel
            label2_me.setText("希望の選択をクリック!");
            tf_ba.setText("");
            bank.show(bankPanel, "1");

        }
    }
}


class Bank{
    int doOpen(String f) {
        return 0;
    };

    int doClose(String f) {
        return 0;
    };

    int doBalance(String f) {
        return 0;
    };

    int doWithdraw(String f, String s) {
        return 0;
    };

    int doDeposit(String f, String s) {
        return 0;
    };

}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • Java

    14431questions

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