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]
//...同理下面你也要改。不过这样做不一定是你的需求,大概的原理就是这样。