研究帖4

 

 

 


作者へのメッセージ
研究課題 インデンターはいらないんダー

研究課題 インデンターはいらないんダー

 

 

N 「うーん、困ったな。 」

B 「博士、どうしたんですか? 」

N 「いや、実はね、せっかくそよ風さんがインデンターを作ってくれたんだが、 あまり必要ないみたいなんだ。 」

B 「ええっ!どうしてですか? 」

N 「うん。本棚の「何でも入門書」を読んだら、htmlのソースをそのまま表示 する方法が書いてあったんだ。それを使えばインテンダーは使わなくても、もっときれいに表示できる んだ。 」

B 「へえ、そうですか。ちょっとやってみて下さい。 」

N 「うん。 」


import java.io.*;



class extChange{                                      //拡張子変換extension
	String getS(String s,String s2){
		int i1=s.indexOf('.');
		String sout=s.substring(0,i1+1)+s2;
		return sout;
	}
	String checkS(String s){
		int i1=s.indexOf('.');
		String sout=s.substring(i1+1);
		return sout;
	}
}


class Indenter{                                        //indent
	public static void main(String[] args){
		
		boolean bj=false;
		Kio ki=new Kio();
		String sfi=ki.ioSet("処理するファイル名を拡張子付きで入力して下さい。");
		
		extChange ex=new extChange();
		System.out.println("元の拡張子:"+ex.checkS(sfi));
		bj=ex.checkS(sfi).equals("java");
		//if(ex.checkS(sfi).equals("java"))bj=true;
		System.out.println("bj:"+bj);
		String sfo="java";
		if(bj){
			sfo="html";
		}
		
		String sf=ex.getS(sfi,sfo);
		System.out.println("出力ファイル:"+sf);
		
		System.out.println("開始");
		try{
			BufferedReader br=new BufferedReader(new FileReader(sfi));
			PrintWriter pr=new PrintWriter(new FileWriter(sf));
			String line;
			
			while((line=br.readLine())!=null){
				int[] il=new int[line.length()];
				System.out.println(line);
		
				for(int i=0;i";
				}
				
				System.out.println(sout+"-----------出力");
				pr.println(sout);
			}
			
			pr.close();
			br.close();
		}
		catch(Exception e){
			System.out.println("例外"+e+"発生");
		}
		System.out.println("終了");
	}
}

NBS 「ほう、なるほど。きれいですね。どうやったんですか? 」

NBS 「うん。htmlで<pre></pre>というタグがあって、この間に書いたソースは そのままブラウザに表示されるんだ。 」

NBS 「そうなんですか。なーんだ。じゃあ、彼女の努力は 無駄だったわけですね。ワッハッハッハ!! 」

NBS 「こらっ!笑っちゃだめだよ!せっかく一生懸命やったのに、悪いじゃないか。 」

S 「ふたりで何やってるんですか? 」

N、B 「やあ!そよ風さん。 」

N 「実はね、インテンダーなんだが。 」

S 「ああ、あれね。もっといい方法が有りましたよ。 」

N 「えっ? 」

S 「ソースをそのまま表示するタグを見つけたんです。 」

N 「ああ、そうなの?実は私も見つけたんで、上のコードを書いたんだ。 」

S 「いや、それじゃだめなんです。 」

N 「どうして? 」

S 「表示とソースを良く見てください。ソースの<の後が全部消えているでしょう? 」

N 「ああ、本当だね。タグの一種と間違えられるのか。何かいい方法ないかな。 」

S 「『<』を『<』、『>』を『>』に書き換えればいいんです。それに、最初に プログラム名と、最初と最後にタグを入れる機能を付けて、新しいプログラムを作りました。これです! 」

【プログラムIndenter2.java】**************************

import java.io.*;



class Indenter2{                                        //indent
	public static void main(String[] args){
		
		Kio ki=new Kio();
		String sfi=ki.ioSet("処理するjavaファイル名を拡張子無しで入力して下さい。");
		System.out.println("元のファイル名:"+sfi+".java");

		System.out.println("出力ファイルは:"+sfi+".htmlです。");
		
		
		System.out.println("開始");
		try{
			BufferedReader br=new BufferedReader(new FileReader(sfi+".java"));
			PrintWriter pr=new PrintWriter(new FileWriter(sfi+".html"));
			String line;
			
			pr.println("<p><b>【プログラム"+sfi+".java】************************** </b></p>");
			pr.println("<pre>");
			
			while((line=br.readLine())!=null){
				int[] il=new int[line.length()];
				System.out.println(line);
		
				for(int i=0;i<line.length();i++){
					il[i]=(int)line.charAt(i);
				}
				String sout="";

				for(int i=0;i<il.length;i++){
					if(il[i]==60){
						sout+="<";        //この部分はソース参照
					}
					else if(il[i]==62){
						sout+=">";         //この部分はソース参照
					}
					else{
						sout+=(char)il[i];
					}	
				}
					
				System.out.println(sout+"-----------出力");
				pr.println(sout);
			}

			pr.println("</pre>");
			pr.close();
			br.close();
		}
		catch(Exception e){
			System.out.println("例外"+e+"発生");
		}
		System.out.println("終了");
	}
}

   

B 「うわあっ! 」

N 「すごい!コンパイルの時はどうするの? 」

S 「どうもしません。ブラウザに表示されたコードをコピーしてコンパイル出来ます。 」

N 「へえっ!それはすごい。単純だが、前よりずっと良くなった。 」

B 「僕は、そよ風さんががっかりするんじゃないかって、博士と心配してたんだ。 」

S 「本当かしら? 」

N 「BB君はともかく、私は心配していたんだ。 」

S 「ご心配なく。博士の言葉で、『結果は人のため、過程は自分のため。』と言うのが 有るじゃないですか。ここまでで、ずいぶん得るものがありました。 」

N 「えらい!BB君!聞いたかい?さすが、そよ風さんは当研究所のNo.1研究員だ! 」

B 「ちょ、ちょっとまってください。No.1研究員は僕じゃないですか? 」

S 「え、何で? 」

B 「だって、僕のほうが先輩だし。 」

S 「でも、問題は実力よ。 」

N 「そうだねえ、BB君の場合は、まだ実績がないからねえ。 」

B 「ありますよ!8月1日で見学者が100人を越えたじゃないですか。 僕が入り口のボタンを作ったからですよ。 」

S 「フッ、何言ってるの。あんな物で見学者は増えないわ。私のインデンターの研究の おかげよ! 」

N 「うーん、もちろん君たち二人の努力は認めてあげたいよ。でも、ここまで見学者 がふえたのはね、実は、私が、夜と昼で入り口の絵を変えたり、研究帖を少し書き換えたり、色々やった からなんだ。 」

B、S 「博士も何かやってたんですか! 」

N 「何だ!気付かなかったのかね。しょっちゅう色々やって、そのたびごとに何回も アクセスしたんだ。100回近くアクセスしたかな? 」

B、S 「100回も」「アクセスしたんですか!! 」

N 「えっ!いや!100回はやってないな。50回位かな? 」

B、S 「50回も」「アクセスしたんですか……。 」

N 「いやっ、何回かよく覚えてないな。そんなにしてないかな。 」

B、S 「…………」「…………… 」

N 「わっはっはっは!カウンターなんかいいじゃないか。それより研究だよ! 」

B、S 「………」「……… 」

N 「わっはっは!どうしたんだ。元気を出して、さあ研究だ! 」

B、S 「……」「…… 」

N 「どうした!もっとテンションをあげて! 」

B、S 「…」「… 」 

この研究は、一応ここで完了とする。 

 

見学者の皆さんへ。

 クラスKioは、私の作ったクラスです。ですからAPI仕様書にも 書いてありません。私たちの作ったクラスは、いつかまとめてナイスパッケにいれて、import.java.nice.*; でインポートできるようにしたいと思っていますが、まだ出来ていません。興味のある方は、お手数ですが、 研究帖2のプログラムOIAIO(Output Input All In One)をご覧下さい。
 
 Indenter2では、プログラムの性格上、どうしてもコードが正確にブラウザに表示されないところがあります。 <と>を&lt;と&gt;に書き換えるところです。コードに興味のある方は、大変お手数で 恐縮ですが、また、このような三流以下の、くだらない方法を取ることは、私としても大変心苦しいのです が、やむを得ませんので、htmlのソースをご覧下さい。!(そよ風)

研究課題に戻る。

見学者への注意事項に戻る。