Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 이렇게 오류가 나는게 왜 나는지 잘 모르겠습니다.

gud0415의 이미지

package Baseball;
import java.util.Scanner;
import java.io.*;

public class Pl_Modify
{
public static void clearScreen()
{
for (int i = 0; i < 80; i++)
System.out.println(" ");
}

private String[] arr;

public void pl_modify()
{
Scanner scan = new Scanner(System.in);
LoginCtr logctr = new LoginCtr();
PlayerList playerlist = new PlayerList();
int choice;
String result = "";
String group = "";
String name = "";
playerlist.playerlist();
System.out.println(" ");
System.out.print("수정할 선수를 입력하세요 : ");
name = scan.nextLine();
System.out.println("");
System.out.println("1. 구단");
System.out.println("2. 포지션");
System.out.println("3. 비밀번호");
System.out.print("수정할 것을 고르세요 : ");
choice = scan.nextInt();

if(choice == 1)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(new File("D:\\\\Java Program\\\\Baseball\\\\src\\\\Baseball\\\\player.txt")));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("D:\\\\Java Program\\\\Baseball\\\\src\\\\Baseball\\\\player.txt"), true));
PrintWriter pw = new PrintWriter(bw, true);
String row = null;
System.out.print("수정할 구단을 입력하세요 : ");
group = scan.nextLine();
while((row = br.readLine()) != null)
{
String[] arr = row.split(",");
result = arr[1].replaceFirst(arr[1], group);
if(name.equals(arr[0]))
{
pw.write(arr[0] + "," + result + "," + arr[2] + "," + arr[3] + "," + arr[4] + " ");
pw.println(" ");
pw.flush();
System.out.println("수정되었습니다.");
logctr.log_ctr();
}
}
bw.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

이런식으로 입력받은 구단을 수정하려고 하는데 이름입력과 구단입력에서
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
이러한 오류가 납니다.

왜 이렇게 나오는 것일까요 ,...ㅜㅜ

그리고 가능하다면 수정한것을 텍스트에 덮어쓰고싶은데 다음줄로 저장이 됩니다. 어떻게 하는지 알려주세요ㅜㅜ

힌트의 이미지

힌트1: ArrayIndexOutOfBoundsException를 잘 끊어 읽어 보세요. 힌트를 더 드리자면, 대문자 앞에서 끊으면 됩니다.

힌트2: 주어진 프로그램에서 "Array"는 단 하나뿐이네요. 무엇일까요?

힌트3: 그 길이는 어떻게 정해질까요?

힌트4: 결국 가능성은 세 가지죠. 입력 파일이 잘못됐거나, 귀하의 입력 파일에 대한 가정이 잘못됐거나, 둘 다거나. 셋 중 어느 것이 참인지는 질문글 내용만으로는 알 수 없고, 지금으로서는 오직 귀하만이 알 수 있습니다.

추가의 이미지

Quote:
그리고 가능하다면 수정한것을 텍스트에 덮어쓰고싶은데 다음줄로 저장이 됩니다. 어떻게 하는지 알려주세요ㅜㅜ

컴퓨터에서 텍스트 파일을 쓰는 건 원고지에 쓰는 것과 비슷합니다. 한가운데를 고치고 싶을 때는 잘 안 됩니다.
운이 좋으면 (길이가 잘 맞으면) 지우개로 필요한 만큼만 딱 지우고 덮어쓸 수도 있습니다. 하지만 대개는 고치고 싶은 부분부터 끝까지 싹 지워내고 전부 다시 써야 합니다.

어떻게든 할 수 있는 방법이 없는 것은 아니지만(지저분한 방법부터 복잡한 방법까지 다양합니다.) 그다지 별로 노력할 만한 가치가 없겠다 싶거든 그냥 파일 전체를 매번 통째로 쓰는 방법을 권장합니다. 그게 제일 간단하지요.

gud0415의 이미지

감사합니다!! 수정해보겠습니다