다른 프로그램에 대해이 클래스를 작성 중이며 str 문자열을 분할 할 때 배열 예외가 계속 발생합니다.String.split을 사용할 때 "ArrayIndexOutOfBounds"예외가 계속 발생합니다
static String[][] readFile(){
BufferedReader in;
count = 0;
String[][] ret = new String[20][2];
try
{
in = new BufferedReader(new FileReader(CFGfolder+"\\input.ini"));
String str;
while((str=in.readLine()) != null){
if(str!="[GameEvents]"){
ret[count][0]=str.split("=")[0];
ret[count][1]=str.split("=")[1];
count++;
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
이것은 읽은 파일의 형식입니다.
evtCastSpell1=[q]
evtCastSpell2=[w]
evtCastSpell3=[e]
evtCastSpell4=[r]
은 내가
STR 문자열이 정말 (의미, 분할없이 인쇄가)이며 그것이 제대로 파일을 읽고 배열에 넣어 것을 보여주고 무엇을보고했습니다. 문제는 분할 된 문자열
[1]을 읽을 때 발생합니다.
[0] 잘하고 올바르게
evtCastSpell1
evtCastSpell2
evtCastSpell3
evtCastSpell4
정말 그것이 [1] 부분을 읽는되지 않는 이유 아무 생각이 인쇄합니다. 보통 이런 종류의 오류는 정규 표현식에서 나온 것이며, 정규 표현식으로 두 번째 부분의 []을 이해하고 있습니까? 만약 내가 그렇다면 어떻게해야합니까? 주위를 둘러 보았지만 정규식으로 인해 발생할 수있는 유사한 오류가 있습니다. 이게 맞나요?
도움 주셔서 감사합니다.
요청한 내용이 아니지만 플랫폼 별 코딩을 피하기 위해'new FileReader (새 파일 (CFGfolder, "input.ini"))'를 사용해야합니다. – MeBigFatGuy
당신은 split을 두 번하는 것을 피하기 위해'ret [count] = str.split ("=");'할 수도 있습니다. – MeBigFatGuy
예외가있는 이유와 올바른 코드가 sudmong의 답변에 나와 있지만 코드에도 다른 문제가있을 수 있습니다. 개수가 배열 크기 20을 초과하면 바운더레이션을위한 배열 인덱스도 생깁니다. –