日期:2014-05-20  浏览次数:20734 次

java.lang.NullPointerException
本帖最后由 ky5047 于 2012-11-05 22:45:29 编辑
try{
double save2[][]=null;
FileReader fin = new FileReader("D:\\score.txt");
BufferedReader br=new BufferedReader(fin);
String temp;   //用来接收读取的一行字符
//将信息从文件中读出,与所输入的学号进行比较,判断该学生是否存在
int i=0;
int j = 0;
while((temp=br.readLine())!=null)
{
//将一条学生的信息非为学号、姓名、专业
String stuInfo[] =temp.split(" ");

for(j = 0; j<3; j++)
{
save2[i][j] = Double.parseDouble(stuInfo[j]);
}
i++;
}
for(i=0;i<save2.length;i++)
{
if(save2[i][2]<save2[i+1][2])
{
double t=save2[i][2];
save2[i][2]=save2[i+1][2];
save2[i+1][2]=t;
}
}
for(i=0;i<save2.length;i++)
{
for(j=0;j<3;j++)
{
System.out.println(save2[i][j]);
}
}

br.close();

}catch (IOException e)
{
e.printStackTrace();
}

------解决方案--------------------

------解决方案--------------------
必须要报java.lang.NullPointerException异常啊。
你的二维数组没有定义直接实例赋值的:

double save2[][]=null;
save2[i][j] = Double.parseDouble(stuInfo[j]);这样不报错就怪了。
先给你一个实例,然后你有些地方要改的。实例如下:


String[] stuInfo={"25","45","64"};
double[][] save2=new double[3][0];
for(int j = 0; j<3; j++)
{
save2[j]=new double[1]; //分配空间,不可缺少
save2[j][0] = Double.parseDouble(stuInfo[j]);
}
for(int i=0;i<3;i++)

System.out.println(save2[i][0]);




那么你的代码必须改成:


int i=0;
int j = 0;
save2=new double[3][0]; 
//.....
save2[j]=new double[j+1]; //这里必须要,分配空间
save2[j][i] = Double.parseDouble(stuInfo[j]);//看清是[j][i]
//...同理下面你也要改。不过这样做不一定是你的需求,大概的原理就是这样。