JAVA
1package list; 2public class Stack{ 3 private Cell head; 4 5 public Stack(){} 6 7 public void push(Object element){ 8 Cell data = new Cel(element); 9 data.setNext(head); 10 this.head = data; 11 } 12 13 public Object pop(){ 14 Object data; 15 data = head.getElement(); 16 this.head=head.getNext(); 17 return data; 18 } 19} 20 21------------------------------------------別ファイル 22 23package list; 24class Cell{ 25 private Object element; 26 private Cell next; 27 Cell(Object element){ 28 this.element = element; 29 } 30 public Object getElement(){ 31 return element; 32 } 33 public Cell getNext(){ 34 return next; 35 } 36 public void setElement(Object element){ 37 this.element = element; 38 } 39 public void setNext(Cell next){ 40 this.next = next; 41 } 42 public String toString(){ 43 String s = (String)this.element; 44 if (this.next == null){ 45 return s; 46 } 47 else { 48 return (s + " <-- " + (this.next).toString()); 49 } 50 } 51
Stack.java:3: エラー: シンボルを見つけられません private Cell head; ^ シンボル: クラス Cell 場所: クラス Stack Stack.java:8: エラー: シンボルを見つけられません Cell data = new Cell(element); ^ シンボル: クラス Cell 場所: クラス Stack Stack.java:8: エラー: シンボルを見つけられません Cell data = new Cell(element); ^ シンボル: クラス Cell 場所: クラス Stack エラー3個
1つのファイルにこれらのclassを置くとうまくいくのですが、ファイルを分けるとコンパイルエラーが発生します。解決法を教えてください。
>ファイルを分けるとコンパイルエラー・・・その時のディレクトリ構造は、どうなっていますか?
同じディレクトリに入れています。
listというディレクトリに、Stack.javaとCell.javaの二つのファイルが入っています。
クラスパスの設定はどうなっていますか?
すみません。クラスパスとは何でしょうか?
コンパイルの仕方まちがえてるんじゃないの?
どのように学習しているか知りませんが、教材を使っているのならばその教材に記載はありませんか?
javac -encoding UTF-8 Stack.java とコンパイルしていたのを
javac -encoding UTF-8 Stack.java Cell.javaとしたらコンパイルできました。
ありがとうございます!
ところでMainClassではMain.javaさえコンパイルすればよかった気がするのですが、それはMainClass限定ということでしょうか?
一つ上のディレクトリで
javac -encoding UTF-8 list/Stack.java
javac -encoding UTF-8 list\Stack.java
とかやらないとクラスが増えていくと大変よ
なるほど。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー