
平成17年春期
基本情報技術者試験午後問題の
問12 JAVA電卓プログラムの
プログラム4を
実際にコーディングしたのですが
コンパイルできません。
(全部で4つのプログラムから構成されていて、
プログラム1、2、3はコンパイル及び実行できました)
肝心のメインメソッドである最後のプログラム4がコンパイルできず
実際の検証が出来ないので困っています。
(エラー内容)
CalculatorTest.java:30: シンボルを見つけられません。
シンボル: メソッド eventDispatched(CalculatorEvent)
場所 : Calculator の クラス
calc.eventDispatched(event);
(プログラム内容)
//プログラム4
public class CalculatorTest{
public static void main(String[] args){
Calculator calc = new Calculator(
new CalculatorOutput(){
public void display(int value){
System.out.println(value);
}
public void display(String value){
System.out.println(value);
}
});
String keys = args[0];
for (int i=0; i<keys.length(); i++){
char c = keys.charAt(i);
CalculatorEvent event = null;
if (c>= '0' && c<= '9'){
event = new CalculatorEvent(CalculatorEvent.DIGIT,c - '0');}else if (c == '=' || c == '+' || c == '-'
|| c == '*' || c == '/'){
event = new CalculatorEvent(
CalculatorEvent.OPERATOR, c);
}else if (c == 'C'){
event = new CalculatorEvent(
CalculatorEvent.CLEAR);
}
if(event != null)
calc.eventDispatched(event);
}
}
}
尚、eventDispatchedは、プログラム3で出てきました。
プログラム1、2、3、4は
ソースファイル、クラスファイル共に同じ
フォルダにあります。
プログラム4の
何処をどの様に変更したら
コンパイル及び実行できるようになるでしょうか?
詳しい方教えて下さい。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
Win98!?
まあ、きっと大丈夫、うん。
ところでコマンドプロンプトで
java -version
をした結果を教えてくれないかしら。
それといったんクラスファイルをすべて削除して、
CalculatorTest.javaのみでコンパイルしてみて貰えるかな?
その際、正常なら他のソースファイルも一緒に
コンパイルされるわ。
CLASSPATHは
http://www.hellohiro.com/appli.htm
の下の方にある「◆変数の簡単な説明」が
的確な説明かしら。
ちなみに
このサイト
http://www.hellohiro.com/
はJavaの勉強にはいろいろ便利なので
暇のある時に一通り目を通しておくといいわ
> iTEC JAVAプログラミング
アイテックってことはJava初心者向けの本じゃないわね。
ある程度下地のできた人向けの試験対策本ね。
もしもう一冊買うなら
ソフトバンククリエイティブの
「やさしいJava」あたりをお勧めしておくわ。
分厚いけどサンプルが多いし
文字も大きいし読みやすいわ。
この回答への補足
ご回答をありがとうございます。
>コマンドプロンプトで
java -versionをした結果です。
尚、C:\Workは、ソースファイルと(classファイルの)
保存フォルダです。
C:\Work>java -version
java version "1.5.0_17"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)
Java HotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode)
>いったんクラスファイルをすべて削除して、
CalculatorTest.javaのみでコンパイル
した結果です。
C:\Work>javac CalculatorTest.java
CalculatorTest.java:30: シンボルを見つけられません。
シンボル: メソッド eventDispatched(CalculatorEvent)
場所 : Calculator の クラス
calc.eventDispatched(event);
^
エラー 1 個
と表示しました。
そして、他のファイル
(Calculator.java、CalculatorOutput.java、
CalculatorEvent.java)のclassファイルは、
3つ共に、生成しませんでした。
他の3つのclassファイルの未生成の異常は、
環境変数等の設定不備?ですか?
繰返しになりますが、
iTEC JAVAプログラミングの例題は、
問題なく起動しました。
更に別の本(工学社 文系のためのJAVA入門)の
例題も問題なく起動しました。
それで何故、基本情報技術者試験問題は
こうも不動なのか、キツネにつままれている感じです
そこで、更に教えて欲しいのですが、
基本情報技術者試験問題は、
クラスパス等の考慮も問うているのでしょうか?
(一つのフォルダにソースファイルとそのクラスファイルを
全部保存して、同じフォルダ内で>java ・・・・とやっても
起動するプログラム仕様にしていない、という事実からの推定ですが・・・)
学習書のご指南、ありがとうございます。
検討しようかと思います。
長文かつ初心者の疑問ですみません。
宜しくお願いします。
プログラム3のコーディングミスを発見、訂正して、
ご指南通りの結果を得ました。
20ポイントしか贈呈できないことが
残念です。
又、ご教授をお願い致します。
お忙しい中、沢山の貴重なお時間を戴き、
且つご丁寧なご助言を賜り、
ありがとうございました!
No.4
- 回答日時:
eventDispatched
eventDispached
さてどっち??
コンパイラはつねに正しい…。
No.2
- 回答日時:
実は私はこの問題知っているのよ。
講習で教えたことあるし。
> クラスパスがわかりません
問題を解く前にそこから勉強しないとね
最初に確認しておけば良かったわ。
どんな環境で行っているのかしら?
それと実際にコンパイルした方法を書いてもらえると何か判るかも。
この回答への補足
ご回答を、ありがとうございます。
学習環境です。
OS:Win98SE
JAVA:J2SE
エディタ:秀丸エディタ
テキスト:iTEC JAVAプログラミング(青表紙の本です)
尚、クラスパスの解説はありません。
コンパイル方法
まずプログラム1をコーディング、CalculatorEvent.javaで保存、
javac CalculatorEvent.javaでコンパイル。
プログラム2をコーディング、CalculatorOutput.javaで保存、
javac CalculatorOutput.javaでコンパイル。
プログラム3をコーディング、Calculator.javaで保存、
javac Calculator.javaでコンパイル。
プログラム4をコーディング、CalculatorTest.javaで保存、
javac CalculatorTest.javaでコンパイル。
MS-DOS窓でコンパイルと実行:例 java CalculatorEvent
としています。
プログラム1から4の
ソースファイル、クラスファイルは全て同じフォルダに格納しています。
又、iTEC JAVAプログラミングの例題も同様に、
コーディング、コンパイル、格納していて、
プログラムの実行結果を確認できています。
クラスパスは、ネット検索しましたが、
訳が分からずお手上げ状態です。
すみませんが、宜しくお願い致します。
No.1
- 回答日時:
エラーメッセージは
CalculatorクラスにeventDispatched(CalculatorEvent)
メソッドはないと言っているわ。
だから実際にはないのでしょう。
もしもCalculatorクラスにきちんと
eventDispatched(CalculatorEvent)があるのなら
Calculatorクラスが複数あって
CalculatorTestコンパイル時の
クラスパスの設定が間違っていたりするんじゃないかしら?
としか現在の情報からでは推測できないわね。
この回答への補足
早速のご回答をありがとうございました。
ご参考までに、
全プログラムをアップします。
//プログラム1
public class CalculatorEvent{
public static final int DIGIT = 1;
public static final int OPERATOR = 2;
public static final int CLEAR = 3;
private int type,value;
public CalculatorEvent(int type){
this(type,0);
}
public CalculatorEvent(int type, int value){
if(type<DIGIT || type>CLEAR)
throw new IllegalArgumentException();
this.type = type; this.value = value;
}
public int getType() { return type;}
public int getValue() { return value;}
}
//プログラム2
public interface CalculatorOutput{
public void display(int value);
public void display(String value);
}
//プログラム3
public class Calculator{
private int accumulator = 0,register = 0;
private int operator = 0;
private CalculatorOutput output;
public Calculator(CalculatorOutput output){
this.output = output;
}
public void eventDispached(CalculatorEvent event){
switch(event.getType()){
case CalculatorEvent.DIGIT:
if(operator == '='){
register = 0; operator = 0;
}
register = register * 10 +event.getValue();
output.display(register);
break;
case CalculatorEvent.OPERATOR:
try{
register = calculate();
output.display(register);
accumulator = register;
operator = event.getValue();
}catch(ArithmeticException e){
output.display("Error");
accumulator = 0; operator = 0;
}
if(operator != '=')
register = 0;
break;
case CalculatorEvent.CLEAR:
register = 0;
accumulator = 0;
operator = 0;
output.display(register);
}
}
private int calculate(){
switch(operator){
case '+':
return accumulator + register;
case '-':
return accumulator - register;
case '*':
return accumulator * register;
case '/':
return accumulator / register;
}
return register;
}
}
実際は、この後にプログラム4が続いて
一つの完成プログラムとなります。
ところで、クラスパスというのがよく分かりません。
プログラム1,2,3,4、を
同一フォルダに置いて、コンパイル、classファイルを生成して実行
、する以外のファイル指定及び実行方法が有るのでしょうか?
済みませんが又、ご教授頂ければ幸いです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java final 1 2022/06/10 22:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IIS環境でJAVAを使用したい
-
javaが文字コードの影響でコン...
-
Eclipseについて
-
配列に対してsetText()は使えな...
-
Javaのコンパイル結果が表示さ...
-
javax.servlet は存在しません...
-
XPG6かXPG4か?
-
eclipseについて
-
JDBC + JAVA Servlet、JSP、でM...
-
javaの簡単なソースがコンパイ...
-
同一パッケージ内の継承について
-
jspとサーブレット
-
classファイルを元に戻す
-
.jarファイルの中身って書き換...
-
Eclipseで、プロジェクト名のと...
-
Eclipse(JAVA)のデバッグで他...
-
eclipseのショトカットキー
-
html上で、バッチやexeファイル...
-
Eclipse・プロジェクトで、フォ...
-
正しいURL指定しているにもかか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.jarファイルの中身って書き換...
-
javaが文字コードの影響でコン...
-
IIS環境でJAVAを使用したい
-
javax.servlet は存在しません...
-
__gcクラスから、__nogcクラス...
-
eclipseの構文エラーについて
-
Javaのコンパイル結果が表示さ...
-
日本語対応 逆コンパイラについて
-
サクラエディタでjavaのプログ...
-
コンパイルができないのですが...
-
Eclipse3.5EEでJavaのコンパイ...
-
javaの簡単なソースがコンパイ...
-
逆コンパイルの見方について
-
eclipseの設定のJREとコンパイ...
-
TOMCAT_HOMEって?
-
Strutsのエラー?それともサー...
-
TeXで図を挿入できません.助け...
-
warファイルを展開するとタイム...
-
文字化けについての質問
-
「シンボルを見つけられません...
おすすめ情報