【至急】javaの課題でエラーが消えずコンパイルが通りません。
受付中
回答 3
投稿
- 評価
- クリップ 0
- VIEW 2,165

退会済みユーザー
前提・実現したいこと
学校で銀行口座を作ると言う課題が出されているのですが、一個のエラーがどうやっても消えず悩んでいます。
言語は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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+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;
};
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
2017/01/23 13:46
こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。