タートルにはファイルの入出力のための便利なメソッドがついています.
1: /* 2: * ファイル読み書きのテスト 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class FileIOSample extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new FileIOSample(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: saveToFile("a.txt", "ほげ"); 16: print(loadFromFile("a.txt")); 17: } 18: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、FileIOSampleプログラムが実行できます。
ファイル読み込みとStringクラスライブラリを利用して,作文遊びのプログラムを書いてみましょう.
作文するプログラムです.
1: /* 2: * 作文さん 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class SakubunSan extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new SakubunSan(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: // 名詞を読み込む 16: String nountxt = loadFromFile("Noun.txt"); 17: String[] nouns = nountxt.split("\n"); 18: int nounSize = nouns.length; 19: 20: // 動詞を読み込む 21: String verbtxt = loadFromFile("Verb.txt"); 22: String[] verbs = verbtxt.split("\n"); 23: int verbSize = verbs.length; 24: 25: for (int i = 0; i < 10; i++) { 26: // 作文する 27: String noun1 = nouns[random(nounSize)];// 名詞1を選ぶ 28: String noun2 = nouns[random(nounSize)];// 名詞2を選ぶ 29: String verb = verbs[random(verbSize)];// 動詞を選ぶ 30: print(noun1 + "が" + noun2 + "に" + verb); 31: } 32: } 33: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、SakubunSanプログラムが実行できます。
入力するファイルは以下のような形式になっています.
Noun.txt
仕舞い 綺 洋裁 組打ち 畿内 明き家 .... (続く)
Verb.txt
引き込む すきかえす 看取る 睦む きこす .... (続く)
文字列を反転するプログラムです.
1: /* 2: * 反転さん 反転文を作る 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class HantenSan extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new HantenSan(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: print(makeHantenbun("こんにちは")); 16: print(makeHantenbun("あいうえお")); 17: } 18: 19: String makeHantenbun(String bun) { 20: int len = bun.length(); 21: String hantenbun = ""; 22: for (int i = len - 1; i >= 0; i--) { 23: char c = bun.charAt(i); 24: hantenbun = hantenbun + c; 25: } 26: return hantenbun; 27: } 28: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、HantenSanプログラムが実行できます。
回文かどうかを判定するプログラムです.
1: /* 2: * 回文判定さん 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class HanteiSan extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new HanteiSan(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: print(check("こんにちは")); 16: print(check("あいうえお")); 17: print(check("とまと")); 18: print(check("たけやぶやけた")); 19: } 20: 21: boolean check(String bun) { 22: String hantenbun = makeHantenbun(bun); 23: boolean result = bun.equals(hantenbun); 24: return result; 25: } 26: 27: String makeHantenbun(String bun) { 28: int len = bun.length(); 29: String hantenbun = ""; 30: for (int i = len - 1; i >= 0; i--) { 31: char c = bun.charAt(i); 32: hantenbun = hantenbun + c; 33: } 34: return hantenbun; 35: } 36: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、HanteiSanプログラムが実行できます。
回文を自動生成するプログラムです.
1: /* 2: * 回文さん 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class KaibunSan extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new KaibunSan(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: // 名詞を読み込む 16: String nountxt = loadFromFile("NounYomi.txt"); 17: String[] nouns = nountxt.split("\n"); 18: int nounSize = nouns.length; 19: 20: // 動詞を読み込む 21: String verbtxt = loadFromFile("VerbYomi.txt"); 22: String[] verbs = verbtxt.split("\n"); 23: int verbSize = verbs.length; 24: 25: for (int i = 0; i < 1000000; i++) { 26: // 作文し,回文ができたら表示する 27: String noun1 = nouns[random(nounSize)]; 28: String verb = verbs[random(verbSize)]; 29: String bun1 = noun1 + verb; 30: if (check(bun1)) { 31: print(noun1 + "-" + verb); 32: } 33: } 34: 35: print("finished"); 36: } 37: 38: boolean check(String bun) { 39: String hantenbun = makeHantenbun(bun); 40: boolean result = bun.equals(hantenbun); 41: return result; 42: } 43: 44: String makeHantenbun(String bun) { 45: int len = bun.length(); 46: String hantenbun = ""; 47: for (int i = len - 1; i >= 0; i--) { 48: char c = bun.charAt(i); 49: hantenbun = hantenbun + c; 50: } 51: return hantenbun; 52: } 53: 54: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、KaibunSanプログラムが実行できます。
loadFromFile(String)の引数にURLを入れると,Webページを取ってくることが出来ます.
1: /* 2: * Webファイル読みこみのテスト 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class WebSample extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new WebSample(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: print(loadFromFile("http://www.inf.shizuoka.ac.jp/", "UTF-8")); 16: } 17: }
ここ をクリックすると、プログラムをダウンロードできます。
(このプログラムはアプレット上では実行できません.)
実行結果は次のようになります.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>静岡大学 情報学部</title> .... (続く)
Webページのソースが取得できたら,そこから好きな情報を抜き出しましょう
1: /* 2: * 今日の浜松の天気 3: * Created on 2012/01/07 4: * Copyright(c) 2011 Yoshiaki Matsuzawa, Shizuoka University. All rights reserved. 5: */ 6: public class WeatherInfo extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new WeatherInfo(), args); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: String file = loadFromFile( 16: "http://weather.yahoo.co.jp/weather/jp/22/5040.html", "UTF-8"); 17: int index1 = file.indexOf("><br>"); 18: String weather = file.substring(index1 + 5 + 13); 19: int index2 = weather.indexOf("</td></tr>"); 20: weather = weather.substring(0, index2 - 13); 21: System.out.println("今日の浜松の天気は「" + weather + "」です"); 22: } 23: }
ここ をクリックすると、プログラムをダウンロードできます。
(このプログラムはアプレット上では実行できません.)
このプログラムでは,
こんなHTMLが取ってこれるので
(以前省略).... <table border=0 cellpadding=2 cellspacing=1 width=100%> <tr align=center><td><b>1月25日(水)</b></td></tr> <tr align=center><td> <img src="http://i.yimg.jp/images/weather/general/forecast/sun_clouds_st.gif" border="0" alt="晴時々曇"><br> 晴時々曇 </td></tr> </table> ....(以後省略)このHTMLから,「晴時々曇」を抜き出すために,Stringクラスの indexOf() と substring(int beginIndex) メソッドを利用しています.
実行結果は次のようになります.
今日の浜松の天気は「晴時々曇」です
ある文章を入力すると,「ケンブリッジ変換」を自動的に行うプログラムを作ってみましょう.
「ケンブリッジ変換」参考URL
ファイル名は「Cambridge.java」とすること.
ここにある,ある中学校の成績データが記述されたCSV形式 のファイルを読み込み, 平均点を求めるプログラムを作ってみましょう.
CSVファイル:Comma Separated Valuesファイル,カンマ「,」でデータが区切られたファイル.
名前,数学,英語 佐藤,41,36 鈴木,46,73 田中,17,55 橋本,66,81 高橋,9,42 渡辺,52,68 伊藤,37,43 山本,99,48
読み込んでからまず,split("\n")で各行に分割し,その後行毎にsplit(",")で各データを得ることが出来ます.
文字列型をint型に変換するには,int Integer.parseInt(String text)メソッドを使います. リファレンスはこちら.
ファイル名は「CSV.java」とすること.
すきなサイトから,必要な情報のみを取ってくるプログラムを書いてみましょう.
複数のサイトから情報を取ってきて,合成できるとなお良い!
ファイル名は「Mashup.java」とすること.