下面这个题目我做了,帮我看看我的代码哪里不行了,提示了一个这样的错误提示:"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();
}
}
}
题目如下:
编程:文本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();
}
}
}
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
张三,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) {
}
}
}
}
}
其实就是只定义了规则还没有执行这个规则。定义数组就是说数组里能放什么类型的东西,但是你还没往里面放东西就都是NULL了。
看异常输出的第一行的行号
你的程序漏洞百出,给你个正确的方法都不学习。
你都没有设置分界符.hasMoreTokens()
好好看看StringTokenizer类 怎么用