- - PR -
コンパイルエラー:シンボルを見つけられません。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-13 04:10
Javaを始めたばかりで、行き詰まってしまいました。
下記のプログラムをコンパイルすると、 「 >javac UNoteB.java UNoteB.java:8: シンボルを見つけられません。 シンボル: メソッド setId(NoteB,java.lang.String) 場所 : UNoteB の クラス setId( b1, "あ0102" ); ^ UNoteB.java:9: シンボルを見つけられません。 シンボル: メソッド setKakaku(NoteB,int) 場所 : UNoteB の クラス setKakaku( b1, 440 ); ^ UNoteB.java:12: シンボルを見つけられません。 シンボル: メソッド setId(NoteB,java.lang.String) 場所 : UNoteB の クラス setId( b2, "BB101" ); ^ UNoteB.java:13: シンボルを見つけられません。 シンボル: メソッド setKakaku(NoteB,int) 場所 : UNoteB の クラス setKakaku( b2, 860 ); ^ UNoteB.java:16: シンボルを見つけられません。 シンボル: メソッド printId(NoteB) 場所 : UNoteB の クラス printId(b1); ^ UNoteB.java:17: シンボルを見つけられません。 シンボル: メソッド printKakaku(NoteB) 場所 : UNoteB の クラス printKakaku(b1); ^ UNoteB.java:20: シンボルを見つけられません。 シンボル: メソッド printId(NoteB) 場所 : UNoteB の クラス printId(b2); ^ UNoteB.java:21: シンボルを見つけられません。 シンボル: メソッド printKakaku(NoteB) 場所 : UNoteB の クラス printKakaku(b2); ^ エラー 8 個 」 と表示されてしまいます。 どのように解決すれば良いのか教えて下さい。 NoteB.java class NoteB{ private String id; // ID private int kakaku; // 価格 /* IDを設定 */ void setId(NoteB b, String id){ b.id = id; } /* IDを取得し出力する */ void printId(NoteB b){ System.out.println(b.id); } /* 価格を設定 */ void setKakaku(NoteB b, int kakaku){ b.kakaku = kakaku; } /* 価格を取得し出力する */ void printKakaku(NoteB b){ System.out.println(b.kakaku); } } UNoteB.java class UNoteB{ void main(){ NoteB b1 = new NoteB(); // b1を作成 NoteB b2 = new NoteB(); // b2を作成 /* b1に値を設定 */ setId( b1, "あ0102" ); setKakaku( b1, 440 ); /* b2に値を設定 */ setId( b2, "BB101" ); setKakaku( b2, 860 ); /* b1を出力 */ printId(b1); printKakaku(b1); /* b2を出力 */ printId(b2); printKakaku(b2); } } | ||||||||
|
投稿日時: 2007-02-13 09:08
メッセージで指摘されているメソッドがUNoteB.javaにないからです。
2つのソースを見比べていてUNoteBがUNoteを継承すればいいのかとおもったりも するのですが、なかなかどうしてそれだけではうまくいかないようです。 | ||||||||
|
投稿日時: 2007-02-13 10:31
まずはエラーメッセージをそのまま検索すること。
初心者のうちは、たいていの場合同じ状況の人の投稿を見つけられます。 | ||||||||
|
投稿日時: 2007-02-13 13:48
クラス、メソッドともにpublicではないからですかね。
使用しているコンパイラによってメッセージの文言が違うので なんともいえないところですけども。 | ||||||||
|
投稿日時: 2007-02-13 14:29
必要な部分のみ抜粋いたします。
『動かす』だけなら まずmainメソッドの宣言を変更して void main(){ ⇒ public static void main(String[] args) { 各メソッド呼び出しに対して setId( b1, "あ0102" ); ⇒ b1.setId( b1, "あ0102" ); setKakaku( b1, 440 ); ⇒ b1.setKakaku( b1, 440 ); setId( b2, "BB101" ); ⇒ b2.setId( b2, "BB101" ); setKakaku( b2, 860 ); ⇒ b2.setKakaku( b2, 860 ); printId(b1); ⇒ b1.printId(b1); printKakaku(b1); ⇒ b1.printKakaku(b1); printId(b2); ⇒ b2.printId(b2); printKakaku(b2); ⇒ b2.printKakaku(b2); というようにそれぞれのメソッドの先頭に b1. または b2. を追加すればコンパイルは可能です。 ただし、クラスの使い方が間違ってますよ。 | ||||||||
|
投稿日時: 2007-02-13 17:59
あぁ、なるほど。
流し読みだったから気づかなかったけど。 根本的にクラスの概念が理解していないケースですね。 スレ主がやっていること
たぶん、やりたいこと
インスタンスの概念を調べれば理解が深まることでしょう。 |
1