[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00687] Re: お助けください。
------------------------- infoseek ML Sponsor --------------------------
┏━┳━┳━┳≪資格の大原 合格Web 税理士講座 ≫━┳━┳━┳━┳━┓
┃大┃原┃税┃理┃士┃講┃座┃!┃合┃格┃者┃の┃84┃%┃が┃受┃講┃
┗━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┻━┛
★パソコンさえあれば自宅で学べるのが合格Web!24時間いつでも何度でも受講
┗ http://www1.ibc.ne.jp/ad/ibc0088.html
------------------------------------------------------------------------
お返事、ありがとうございます。フジタです。
実は、一応完成しているのですが・・・
親パスの取得にVectorとスタックを使うというごり押しのコードに
してしまったので、printListに変数を渡す形に変更しています(^_^;)
変数(sizeとname)は、protectedにしてEntryクラスで宣言する形に変えました。
>サイズ合計の変数を持っておき、再帰的に探索して加算するしかなさそうです。
容量計算は、再帰処理になっています。
ご迷惑を、お掛けしたついでに変更コードをあげておきます。
本当に下手なコードですが、ご了承ください(^_^;)
*Entryクラス
public abstract class Entry {
protected Entry oya;
protected int size;
protected String name;
public abstract String getName(); // 名前
を得る
public abstract int getSize(); // サイズ
を得る
public Entry add(Entry entry) throws FileTreatmentException { // エン
トリを追加する
throw new FileTreatmentException();
}
protected abstract void printList();
public String toString() { // 文字
列表現
return getName();
}
}
*Directoryクラス
import java.util.*;
public class Directory extends Entry {
// private String name; // ディレクトリの名前
// private int size;
private Vector directory = new Vector(); // ディレクトリエントリの
集合
private Entry test; // テストエントリ
private Stack test1 = new Stack(); // テストエントリの集合
public Directory(String name) { // コンストラクタ
this.name = name;
}
public String getName() { // 名前を得る
return name;
}
public Entry add(Entry entry) { // エントリの追加
directory.add(entry);
entry.oya = this;
return this;
}
protected void printList() { // エントリの一覧
// this.getSize();
size = this.getSize();
System.out.println("\\"+this+" ("+this.size+")");
Iterator it = directory.iterator();
while (it.hasNext()) {
test = this.oya;
while(true){
if(test != null){
test1.push(test); // 親のエントリをスタックに追加
test = test.oya;
}else{
break;
}
}
while(true){
if(!test1.empty()){
test = (Entry)test1.pop();
System.out.print("\\"+test);
}else{
break;
}
}
Entry entry = (Entry)it.next();
System.out.print("\\"+this);
entry.printList();
}
}
public int getSize() {
this.size = 0;
Iterator it = directory.iterator();
while (it.hasNext()) {
Entry entry = (Entry)it.next();
this.size += entry.getSize();
// getSize();
}
return size;
}
}
*Fileクラス
public class File extends Entry {
// private String name;
// private int size;
public File(String name, int size) {
this.name = name;
this.size = size;
}
public String getName() {
return name;
}
public int getSize() {
return size;
}
protected void printList() {
System.out.println("\\"+this+" ("+this.size+")");
}
}
------------------------------------------------------------------------
★秋風が心地よいこの季節 “住み替え”の季節です!
http://house.www.infoseek.co.jp/House/top?sv=RF&svx=971122