Java 二维数组不工作

Java 二维数组不工作,java,arrays,object,for-loop,arraylist,Java,Arrays,Object,For Loop,Arraylist,我有一个二维数组,它从一个文本文件中获取一个特定的动物,但由于某种原因,它根本不起作用。我已经检查了任何错误,但没有错误,只是没有输出。它只是不断输出“找不到文件”,我知道这不是真的 正文 代码 试试看{ 动物=新扫描仪(新文件(“anives.txt”); //开始时的行数代码 File File=新文件(“anives.txt”); if(file.exists()){ FileReader fr=新的FileReader(文件); LineNumberReader lnr=新的LineNu

我有一个二维数组,它从一个文本文件中获取一个特定的动物,但由于某种原因,它根本不起作用。我已经检查了任何错误,但没有错误,只是没有输出。它只是不断输出“找不到文件”,我知道这不是真的

正文

代码

试试看{
动物=新扫描仪(新文件(“anives.txt”);
//开始时的行数代码
File File=新文件(“anives.txt”);
if(file.exists()){
FileReader fr=新的FileReader(文件);
LineNumberReader lnr=新的LineNumberReader(fr);
int linenumber=0;
while(lnr.readLine()!=null){
linenumber++;
}
lnr.close();
//结束时的行数代码
字符串[][]动物=新字符串[行号][];
对于(int i=0;i对于(int j=0;j您需要使用大小初始化子数组。尝试按索引访问这些未初始化的子数组会导致NullPointerException。请插入以下代码:

animal[i] = new String[oneRowAnimals.length];
行后:

String [] oneRowAnimals = line.split(",");

正如评论中所建议的,在调试这样的代码时,这非常有帮助,以避免吞没所有类型的异常。在try块中捕获代码可能引发的特定异常,或者至少在catch块中打印一条信息更丰富的消息,这将是一个好主意。

animal.txt必须位于类路径上。我建议st删除try catch并查看它引发的异常。或者至少将异常更改为找不到文件时引发的特定错误。在这种情况下,它当前正在毫无区别地捕获所有异常。
animal[i] = new String[oneRowAnimals.length];
String [] oneRowAnimals = line.split(",");