Java 使用for循环将数字行从文件读取到二维数组
我想从文件中读取一行行数字。代码如下所示,但IDE显示Java 使用for循环将数字行从文件读取到二维数组,java,arrays,multidimensional-array,integer,Java,Arrays,Multidimensional Array,Integer,我想从文件中读取一行行数字。代码如下所示,但IDE显示NullPointerException运行时异常。不知道我做错了什么 //将文件内容读入数组 公共静态void readAndStoreNumbers(){ //初始化新对象 arr=新整数[15][]; 试一试{ //创建文件读取器 文件f=新文件(“E:\\Eclipse Projects\\triangle.txt”); BufferedReader br=新的BufferedReader(新文件读取器(f)); //从文件中读取 字
NullPointerException
运行时异常。不知道我做错了什么
//将文件内容读入数组
公共静态void readAndStoreNumbers(){
//初始化新对象
arr=新整数[15][];
试一试{
//创建文件读取器
文件f=新文件(“E:\\Eclipse Projects\\triangle.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(f));
//从文件中读取
字符串nums;
int指数=0;
而((nums=br.readLine())!=null){
字符串[]数字=nums.split(“”);
//将数字转换为整数后存储到“arr”中
对于(int i=0;i您的arr
的第二维度未初始化,您正在调用
arr[index].length
您的arr
的第二个维度未初始化,您正在调用
arr[index].length
我认为您应该使用StringBuilder
//将文件内容读入数组
公共静态void readAndStoreNumbers(){
//初始化StringBuffer
StringBuilder sb=新的StringBuilder();
试一试{
//创建文件读取器
文件f=新文件(“E:\\Eclipse Projects\\triangle.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(f));
//从文件中读取
字符串nums;
int指数=0;
而((nums=br.readLine())!=null){
字符串[]数字=nums.split(“”);
//将数字转换为整数后存储到“arr”中
对于(int i=0;i
我认为您应该使用StringBuilder
//将文件内容读入数组
公共静态void readAndStoreNumbers(){
//初始化StringBuffer
StringBuilder sb=新的StringBuilder();
试一试{
//创建文件读取器
文件f=新文件(“E:\\Eclipse Projects\\triangle.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(f));
//从文件中读取
字符串nums;
int指数=0;
而((nums=br.readLine())!=null){
字符串[]数字=nums.split(“”);
//将数字转换为整数后存储到“arr”中
对于(int i=0;i
您需要更改-
for(inti=0;i您需要更改-
对于(inti=0;i您可能会遇到NPEX,原因有二
您没有完成对arr
的定义-您在代码中声明arr
为int-arr[][]
,这一点并不明显
即使你有了上面的元素,你也不会为你的第二个数组留出空间。你现在拥有的是;你可以在你的第二个数组中拥有你想要的第二维度中任意长度的元素
我对您的代码所做的唯一修改是使其工作如下:
arr[index] = new int[numbers.length];
…将元素拉入编号
后,进入循环前
你可能会因为两个原因遇到NPEX
您没有完成对arr
的定义-您在代码中声明arr
为int-arr[][]
,这一点并不明显
即使你有了上面的元素,你也不会为你的第二个数组留出空间。你现在拥有的是;你可以在你的第二个数组中拥有你想要的第二维度中任意长度的元素
我对您的代码所做的唯一修改是使其工作如下:
arr[index] = new int[numbers.length];
…将元素拉入编号
后,进入循环前
Java没有真正的多维数组。您使用的实际上是一个int数组数组:newint[n][
实际上创建了一个数组,其中包含n
类型的int[]
对象的空间
因此,您必须分别初始化这些int
数组。这一点很明显,因为您从未在程序中的任何位置指定过第二维度的长度。Java没有真正的多维数组。您使用的实际上是一个int数组数组:new int[n][]
实际上为n
类型的int[]
对象创建了一个具有空间的数组
因此,您必须分别初始化这些int
数组中的每一个。这一点很明显,因为您从来没有在程序中的任何地方指定过第二维度的长度。哪一行显示nullpointerexception?我宁愿给我们一个简单的列表
,其中包含dex是行号,值是整数。哪一行显示nullpointerexception?我希望我们使用一个简单的列表
,其中索引是行号,值是整数。