私は、ファイルから入力を読み込んで単語から文章を作成するプログラムを作成しています。私は単語がある文章ターミネーターのいずれかで終わるかどうかをチェックするために、各単語を検査しています:(。)文字列処理正規表現
- 期間
- 感嘆符
- と疑問符
私は文オブジェクトの新しいインスタンスを作成する必要があるかどうかを決定します。 これは私がこれまで
ArrayList<Sentence2> sentences = new ArrayList<>();
String wordsJoin = "";
int numOfWords = 0;
try{
input = new BufferedReader(new FileReader("final.txt"));
strLine = input.readLine();
while(strLine != null){
String[] tokens = strLine.split("\\s+");
for (int i = 0; i < tokens.length; i++){
String s = tokens[i];
if(s.charAt(s.length()-1) != '.' ||s.charAt(s.length()-1) !='?' ||s.charAt(s.length()-1) != '!'){
wordsJoin += tokens[i] + " ";
numOfWords += tokens.length;
}else{
sentences.add(new Sentence2(wordsJoin,numOfWords));
}
}
strLine = input.readLine();
}
問題がある、私は限界例外のうち、取得しています思い付いたものです。スタックトレースはここにある:範囲外の文字列インデックス:-1 java.lang.String.charAtで(String.java:658)
!スレッド "メイン" java.lang.StringIndexOutOfBoundsExceptionで例外
私のプログラムは入力を読み込んでいて、単語の最後の文字が文末に終わるかどうかを判断します。文と単語の数からなる文クラスのインスタンスを作成しますその文に含まれる。
私はプロセスに必要なファイルからテキストの一部はここにある:暗号のウィキペディアのページに基づいている以下の
テキスト! 暗号は、情報を隠すことの実践と研究です。現代では、暗号は数学とコンピュータサイエンスの両方であり、情報理論、コンピュータセキュリティ、エンジニアリングに密接に関係しています。暗号は、技術的に先進的な社会に存在するアプリケーションで使用されます。例としては、暗号化に依存するATMカード、コンピュータパスワード、および電子商取引のセキュリティが挙げられます。
私は本当にこれで助けが必要です、私は今かなりの時間からそれを超えてきました。
この質問は、配列インデックスの範囲外の例外とどのように重複していますか。私はregexを使って文字列を処理していますが、もう一つは文字列です。 @JarrodRoberson – Saad