行 B に文字列「&」が含まれている場合、テキスト ファイルを読み取り、テキスト ファイルの行 B を前の行 A に追加するプログラムを作成しようとしています。これが私のコードです:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Inputs {
public static void main(String[] args) {
File file = new File("C:\\Users\\frencke\\workspace\\Testing Stuff\\Append Tetsing\\file3.txt");
ArrayList<String> lines = new ArrayList<String>();
ArrayList<Integer> num = new ArrayList<Integer>();
ArrayList<Integer> num2 = new ArrayList<Integer>();
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
lines.add(scanner.nextLine());
String delimiter = " &";
for(int i=0; i<lines.size(); i++) {
if(lines.get(i).contains(delimiter))
num.add(i);
}
for(int i=1; i<=lines.size()+1; i++)
if(num.get(i-1) != num.get(i)){
num2.add(num.get(i));
System.out.println(lines.get(num2.get(i)));
}
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("Cannot find file.");
}
}
}
エラーが発生します
スレッド「メイン」での例外 java.lang.IndexOutOfBoundsException: インデックス: 1、サイズ: java.util.ArrayList.RangeCheck (不明なソース) で 1 java.util.ArrayList.get (不明なソース) で Inputs.main(Inputs.ジャワ:21)
21行目、
if(num.get(i-1) != num.get(i)){
i から 1 を引いているからだと思いますが、これを避けるために i を 0 ではなく 1 として初期化したので、なぜそれが問題なのかわかりません。助けていただければ幸いです。StringBuffer .append() メソッドも試してみましたが、うまくいきませんでしたが、それまたは他の手段で機能するソリューションがあれば、それはただのダンディです。