下面这个题目我做了,帮我看看我的代码哪里不行了,提示了一个这样的错误提示:"java.lang.NullPointerException  at TTtest.main(test99.java:45)"   。但我看不懂那是什么错误,麻烦前辈帮帮忙
题目如下:
编程:文本123.txt中存有某学校的教师信息,教师信息包括教师姓名,基本工资,奖金,它们之间用空格分隔,每个教师占一行然后编制程序读取每个教师信息(注意:是读取教师的全部信息,即读取教师姓名 基本工资和奖金),然后统计所有教师基本工资的总额,奖金总额并输出!
我编写的代码如下:
import java.io.*;
import java.util.*;
class TeacherInformation
{
private String name;
private double baseSalary;
private double extraSalary;
public void setDate(String n,double bs,double es)
{
name=n;
baseSalary=bs;
extraSalary=es;
}
public String getname()
{
return name;
}
public double getBaseSalary()
{
return baseSalary;
}
public double getExtraSalary()
{
return extraSalary;
}
}
class TTtest
{
public static void main(String[] arges)
{
try
{
BufferedReader br=new BufferedReader(new FileReader("123.txt"));
TeacherInformation [] ti=new TeacherInformation[10];
StringTokenizer st;
String s;
String ss;
int i=0,j=0;
double allBaseSalary=0.00;
double allExtraSalary=0.00;
s=br.readLine();
while(s!=null)
{
st=new StringTokenizer(s);
ti[i++].setDate(st.nextToken(),Double.parseDouble(st.nextToken()),Double.parseDouble(st.nextToken()));
s=br.readLine();
}
for(;j<=i;j++)
{
allBaseSalary+=ti[j].getBaseSalary();
allExtraSalary+=ti[j].getExtraSalary();
}
System.out.println("the all baseSalary is "+allBaseSalary);
System.out.println("the all extraSalary is "+allExtraSalary);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    把你的test99的第45行代码贴出来看一下,那一句是45行?
      

  2.   

    ti[i++].setDate()。你前面只定义了一个数组,但是没有往数组里面放TeacherInformation这种类型的对象,ti[i++]就是NULL你调用setDate()方法肯定报空指针。
      

  3.   

    我不明白啊,TeacherInformation [] ti=new TeacherInformation[10]; 这个语句不是定义了一个容量为10的对象数组吗?就是ti[0],ti[1]...ti[9]  都是TeacherInformation类型的对象啊。为什么呢
      

  4.   

    TeacherInformation [] ti=new TeacherInformation[10]; 这个语句不是定义了一个容量为10的对象数组然后
    ti[0] == null
    ti[1] == null
    ti[2] == null
    ti[3] == null
    ti[4] == null
    ti[5] == null
    ti[6] == null
    ti[7] == null
    ti[8] == null
    ti[9] == null
      

  5.   

    这种两分钟就写出来的简单程序还是自己锻炼完成啊。teachaer.txt 文件内容
    张三,500,200
    李四,700,200
    王老师,900,300
    张老师,1500,1200import java.io.*;
    public class test {
    public static void main(String[] args) {
    File file = new File("d:\\teacher.txt");
    BufferedReader reader = null;
    int bsum=0,esum=0;
    try {
    reader = new BufferedReader(new FileReader(file));
    String tempString = null;
    while ((tempString = reader.readLine()) != null) {
    String[] arr = tempString.trim().split(","); 
    bsum+= Integer.parseInt(arr[1]);
    esum+=Integer.parseInt(arr[2]); 
    System.out.println(tempString);
    }
    System.out.println("所有老师工资总和>"+bsum+" 奖金总和>"+esum);
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (reader != null) {
    try {
    reader.close();
    } catch (IOException e1) {
    }
    }
    }
    }
    }
      

  6.   


    其实就是只定义了规则还没有执行这个规则。定义数组就是说数组里能放什么类型的东西,但是你还没往里面放东西就都是NULL了。
      

  7.   

    你还需要实例化TeacherInformation 对象然后放到数组里面,用循环就可以搞定了。
      

  8.   

    NullPointerException是空引用异常,表示你某个引用变量为null。
    看异常输出的第一行的行号
      

  9.   


    你的程序漏洞百出,给你个正确的方法都不学习。
    你都没有设置分界符.hasMoreTokens() 
    好好看看StringTokenizer类 怎么用