Я пишу метод, который редактирует запись в CSV-файле, который должен печатать все, кроме строки, которую я редактирую, а затем печатать отредактированную версию в новый файл.
while((line = br.readLine()) != null) {
if(line.contains("PATRON")) {
pw.println(line);
}
if(!line.contains("PATRON")) {
String[] str = line.split(",", 7);
if(str[1].equals(ID)) {
pw.println(str[0] + "," + ID + "," + str[2] + "," + "false" + "," + "0" + "," + str[5] + "," + "0");
}else {
pw.println(line);
}
}
}
Когда я пытаюсь запустить это и ввести действительный идентификатор, это дает мне исключение
java.lang.ArrayIndexOutOfBoundsException: 1
at myproject.Materials.returnmat(Materials.java:296)
at myproject.Library.mmenu(Library.java:121)
at myproject.Library.mainmenu(Library.java:143)
at myproject.Library.main(Library.java:11)
Однако после выполнения некоторых тестов
for(int x=0;x<str.length;x++) {
System.out.println(x+ ": " +str[x]);
}
Он выводит именно то, что ожидаемый идентификатор, 1: 101, 1: 102 и т. Д. Итак, это показывает мне, что идентификатор определенно находится в индексе str [1].
Почему это вызывает у меня исключение?
РЕДАКТИРОВАТЬ: Если это уместно, вот как я это называю.
case "7":
System.out.println("Enter material ID: ");
String matsid = scan.nextLine();
mats.returnmat(matsid);
scan.nextLine();
break;