記事一覧 ソースコードについて P34-1/2: インターフェイス //------------------------------------------- //TreeS2.java package lib; interface Edit1 { String sn = "氏名:"; String sp = "電話:"; Node edit(int k, String s0, String s1); } interface Edit2 extends Edit1 { String sa = "住所:"; Node edit(int k, String s0, String s1, String s2); } class TreeS1 extends TreeS implements Edit1 { Node search(Node q, int k){ Node p = q; while(p != null){ if(p.d < k) p = p.r; else if(p.d > k) p = p.l; else break; } return p; } public Node edit(int k, String s0, String s1){ Node p = search(top.r, k); if(p == null) return null; if(p.s == null) p.s = new String[4]; p.s[0] = sn + s0; p.s[1] = sp + s1; p.s[2] = p.s[3] = null; return p; } public void show(int k){ Node p = search(top.r, k); System.out.print("#" + k + " "); if(p == null){ System.out.println("?"); return; } for(int i=0; i<4; i++) if(p.s[i] != null){ System.out.print(p.s[i] + " "); } System.out.println(); } } public class TreeS2 extends TreeS1 implements Edit2 { //public TreeS2(){} //デフォルトで生成. public Node edit( int k, String s0, String s1, String s2) { Node p = search(top.r, k); if(p == null) return p; super.edit(k, s0, s1); p.s[2] = sa + s2; return p; } } //------------------------------------------- |
P34-1/2 の Edit1,Edit2 は Node の s で参照される文字 列の配列のデータを編集するためのインターフェイスです. これらの edit() は TreeS を継承した TreeS1,TreeS2 で 実装されます. ・インターフェイスでは変数は宣言できません.Edit1 の "氏名" はオブジェクトのインスタンスではなく,静的に 格納されます.インターフェイスでのメソッドの宣言は Cでの関数のプロトタイプ宣言と似ていますが,型だけ を書くとエラーになります. ・インターフェイスを実装するときはすべてのメソッドを 定義しなければなりません. ・Edit2 の実装で Edit1 の edit() を使いたいときは左記 のように super.edit() とします. ・show(int k) は TreeS の show() と引数が違うのでオー バーライドではなくてオーバーロードです. P34-2/2: 使用例 //------------------------------------------- //TreeS P31-1/2 と同じ //------------------------------------------- //Main.java package chk; import lib.*; public class Main { public static void main(String[] args) { TreeS2 t = new TreeS2(); t.insert(7); t.insert(3); t.insert(9); t.insert(2); t.insert(5); t.edit(2, "山田太郎", "090-12345678"); t.show(); t.show(2); } //------------------------------------------- 実行結果 //------------------------------------------- run: LL: 2 L: 3 LR: 5 : 7 R: 9 #2 氏名:山田太郎 電話:090-12345678 構築成功 (合計時間: 0 秒) //------------------------------------------- |
http://blog.goo.ne.jp/bonsai-juku/e/be6923195e439938e14d9315f3be9446 のバグ(?)が分かりました.show(int k) の「#」を全角に修正しました.
参考:
<PRE>
public void show(int k){
Node p = search(top.r, k);
System.out.print("#" + k + " ");
if(p == null){
System.out.println("?"); return;
}
for(int i=0; i < 4; i++) if(p.s[i] != null){
System.out.print(p.s[i] + " ");
}
System.out.println();
}
</PRE>
の「<」「>」「#」を半角に変えて実行する次のエラーになり,もどると記事が消えています.
Web サイト側でページを表示できません
HTTP 500
可能性のある原因:
•Web サイトがメンテナンス中である。
•Web サイトに、プログラム上の問題がある。
AN HTTP Server Errors
http://homepage1.nifty.com/yito/anhttpd/error.html#500