元小学校教員!がIT企業へ転職したリアルなブログ

公立の小学校教員を4年間勤めた後、IT企業へ転職しました。教育・転職・ITに関する情報を発信していきます。

【Java】【初心者】しりとりプログラム~その③~

おはようございます。
駆け出しプログラマーのakhです。

その②からの続きです。





今回、しりとりプログラムをつくる中で、

⁇でいっぱいだったのが、、、




コンピュータは、外部の辞書データから読み込んで出力する。


ということです。


これを聞いて、「え?自動的にコンピュータが言葉を返してくれないの?」

と思いました。そうです。ゼロから作るから、返してくれるわけありません。





さっそくググるところから始めました(笑)


私が参考にしたサイトはこちらです。↓↓↓↓↓↓↓↓↓

Java】FileReader、BufferedReaderでテキストファイルを読み込む> https://www.sejuku.net/blog/20924>
Let'sプログラミング >https://www.javadrive.jp/start/stream/index1.html>




いろいろググってみて、分かったこと

・ファイルを読み込むには「FileReaderクラスのreadメソッド」や
 「BufferedReaderクラスのreadLineメソッド」がある。
・「FileReaderクラスのreadメソッド」は、文字を一文字ずつ読んでいくときに使う。
・「BufferedReaderクラスのreadLineメソッド」は、
  テキストファイルを一行ずつ読み込むときに使う。

なので、今回は、「BufferedReaderクラスのreadLineメソッド」
を使うことにしました。

以下、記述したコードです。

try {
	                // ファイルのパスを指定する
	                File file = new File("C:\\辞書\\sakura.txt");
	                // ファイルが存在しない場合に例外が発生するので確認する
	                if (!file.exists()) {
	                    System.out.print("ファイルが存在しません");
	                    return;
	                }
	                // BufferedReaderクラスのreadLineメソッドを使って1行ずつ読み込み表示する
	                FileReader fileReader = new FileReader(file);
	                BufferedReader bufferedReader = new BufferedReader(fileReader);

	                while ((data = bufferedReader.readLine()) != null) {
	                	word = data;
	                	data = toUpper(data);
	                	data = remove(data);
	                	//辞書に言葉があるか検索
	                	if(inputstr.charAt(inputstr.length()-1) == data.charAt(0)){
	                		if(!used.contains(word) ) {
	                			System.out.println("com:"+data);
	                			break;
	                		}
	                	}
	                }

                // 最後にファイルを閉じてリソースを開放する
                bufferedReader.close();
	    		} catch (IOException e) {
	    			e.printStackTrace();
	    		}

BufferedReaderクラスのreadLineメソッドを使うときには、

エラー発生時の処理である、「例外」を記述しなければなりません。



ここでいう、エラー発生時とは、

BufferedReaderクラスのメソッドであるreadLine()を実行するときに、
「IOException」という例外が発生する可能性があるのに対処されていません、というエラーです。



try-catchのブロックを使うことで、エラーに対する処理を書くことができました(^O^)/