我正在尝试将CSV文件加载到2d数组中,但是当我在main中调用它时,我收到错误
线程“main”中的异常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);
}
}
答案 0 :(得分:1)
我不知道您调用to_Array
和public String[][] filetable = new String[rows][cols];
方法的顺序。但我猜,问题在于,当rows=0
和cols=0
调用set_Array
时,您实际上创建的是0行和0大小的2D数组。要解决问题,请调用rows
方法为cols
和to_Array
分配正确的值,然后在public void to_Array(File example)
{// Now rows and cols will have proper values assigned
String[][] filetable = new String[rows][cols];
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);
}
}
方法中实例化您的2D数组。
League\OAuth2\Server\Grant\PasswordGrant