나는 CSV는 2 차원 배열에 파일을로드하기 위해 노력하고있어,하지만 난 주에 전화를 갈 때 나는 오류를 스레드에서실패는 2 차원 배열
예외가 "기본에 .CSV 파일을로드 "java.lang.ArrayIndexOutOfBoundsException : 내 코드에서 0
파일이 다음 라인을 가지고있는 동안, 그것은 다시 2D 배열로 이동하는 문자열 배열에 저장합니다 라인을 분할합니다. 어떻게 오류가있을 수 있는지 이해하지 못합니다. 설명 할 의사가있는 사람이 있습니까? 아니면 매우 밀도가 높습니까? 나도 몰라
public int rows = 0;
public int cols = 0;
public String[][] filetable = new String[rows][cols];
public void set_Array(File example)
{
try
{
FileReader file = new FileReader(example);
Scanner sc = new Scanner(file);
if(sc.hasNextLine())
{
String[] tokens = sc.nextLine().split(",");
cols = tokens.length;
rows++;
}
while(sc.hasNextLine())
{
rows++;
sc.nextLine();
}
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
}
public void to_Array(File example)
{
try
{
FileReader file = new FileReader(example);
Scanner sc = new Scanner(file);
int r = 0;
while(sc.hasNextLine())
{
String[] tokens = sc.nextLine().split(",");
for(int c = 0; c < cols; c++)
{filetable[r][c] = tokens[c];}
r++;
}
}
catch (FileNotFoundException e)
{
System.out.println(e);
}
}
이 문제는 아마도'filetable '과 관련이 있지만,'filetable' 설정 방법을 보여주지는 못합니다. 또한,'cols'를 계산하는 또 다른 방법을 사용한다고하지만, 우리는 그것이 무엇인지 알려주지 않습니다. 결론 : 당신에게 우리에게 당신을 도울만한 정보를 거의주지 않았습니다. – ajb
죄송합니다. 지금 고칠 것입니다! – JAVANOOB
'filetable'을 만들 때'rows'와'cols'는 모두 0입니다. 왜냐하면'filetable'은 객체가 처음 생성 될 때 만들어지기 때문입니다. 'rows'와'cols'가 계산 된 후에'filetable = new String [rows] [cols];를 할당 해보십시오. 또한, 당신의 방법은 전체 입력 파일을 두 번 통과해야하는데, 이상적이지 않습니다. 'ArrayList'를 사용하면 크기가 동적으로 커질 수있는 배열을 만들 수 있으므로 행 수를 미리 계산할 필요가 없습니다. – ajb