ここから本文です

txtファイルを読んで1文字ずつコンソールに表示するプログラムを書いたのですがjav...

jav********さん

2013/1/1121:36:34

txtファイルを読んで1文字ずつコンソールに表示するプログラムを書いたのですがjava.lang.StringIndexOutOfBoundsExceptionエラーが出てしまいます

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class Message {
public ArrayList<String> stringArray = new ArrayList<String>();
public Message() {
readFile();
}
private void readFile() {
String path = "読みたいtxtファイルの絶対パス";

try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(path));
String str;
while((str = bufferedReader.readLine()) != null) {
stringArray.add(str);
}
bufferedReader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("-----Start-----");
Timer timer = new Timer();
timer.schedule(new Task(), 514, 1);
}
private class Task extends TimerTask {
private int cursor = 0;
private int n = 0;
@Override
public void run() {
System.out.print(stringArray.get(n).charAt(cursor++));
if(cursor == stringArray.get(n).length()) {
System.out.println("");
cursor = 0;
//stringArray.remove(n); // ←ココ
n++;
}
if(n==stringArray.size()) {
System.out.println("-----Stop------");
cancel();
System.exit(0);
}
}
}

public static void main(String[] args) {
new Message();
}
}

www.yahoo.co.jpさんのhtmlソースコードをtxtで保存して読ませたところ、途中で上記のエラーがでてしまいます。
しかし「//stringArray.remove(n);」のコメントアウトを外すと、最後まできちんと読んでくれます。
何が原因でこのようなことになっているのでしょうか?

補足すみません。コメントアウトを外した場合でも、www.google.co.jpさんのコードでは同じように途中でエラーが出ました。
困りました。

閲覧数:
337
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

kon********さん

2013/1/1205:32:27

System.out.println();
System.out.print("length=");
System.out.println(stringArray.get(n).length());
System.out.print("cursor=");
System.out.println(cursor);

この5行を
System.out.print(stringArray.get(n).charAt(cursor++));
の前に挿入して再度実行してみてください
何が起こったのか、何が問題なのかがわかると思います。

質問した人からのコメント

2013/1/13 14:41:50

stringArray(n)のlengthが0のとき(txtファイルが文頭改行のとき)の条件をすっかり忘れていました。
文頭改行・文末改行をしっかり条件分岐すれば直りました。ありがとうございます。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる