A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package four.day;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Set;

public class demoStudent {

        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                Set<students> stus = studenttool.getstudents();
                System.out.println("键盘录录完毕!!");
                studenttool.writeStu(stus);
        }

}
class students
{
        String name;
        int ma,en,cn;;
        int sum=0;
        students(String name,int ma,int en,int cn )
        {
                this.name=name;
                this.ma=ma;
                this.en=en;
                this.cn=cn;
                sum=ma+en+cn;
        }
        public int getsum()
        {
                return sum;
        }
        public String getname()
        {
                return name;
        }
        public String toString()
        {
                return "Student["+name+","+ma+","+en+","+cn+",]";
        }

}
class studenttool
{
public static Set<students> getstudents() throws Exception, IOException
{
       
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         Set<students> stu=null;
         String line=null;
         
         while((line=br.readLine())!=null)
         {
                 if(line.equals("over"))
                 {
                         break;
                 }
                 String info[]=line.split(",");
                 students s=new students(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[1]),Integer.parseInt(info[1]));
                 stu.add(s);
       
         }
         for(students s:stu)
         {
                 System.out.println(s.toString());
         }
        return stu;
}
public static void writeStu(Set<students> stu) throws IOException
{
         BufferedWriter bw=new BufferedWriter(new FileWriter("g:/java/java基础4/stu.txt"));
         
         for(students s:stu)
         {
                 bw.write(s.toString());
                 bw.newLine();
         }
         bw.close();
}
                
}
为什么studenttool.getstudents(); 老抛出空指针、、

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
代码中stu是null,并没有指向一个集合类的实例,而接着对其调用相应的方法导致。
public static Set<students> getstudents() throws Exception, IOException
{
        
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         Set<students> stu=null;
         String line=null;
         
         while((line=br.readLine())!=null)
         {
                 if(line.equals("over"))
                 {
                         break;
                 }
                 String info[]=line.split(",");
                 students s=new students(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[1]),Integer.parseInt(info[1]));
                stu.add(s);
        
         }
         for(students s:stu)
         {
                 System.out.println(s.toString());
         }
        return stu;
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘基军 发表于 2012-2-27 22:18
代码中stu是null,并没有指向一个集合类的实例,而接着对其调用相应的方法导致。
public static Set getstu ...

  stu.add(s);
不就是往集合里面传值了吗?怎么还为空呢?
回复 使用道具 举报
陈斌 发表于 2012-2-27 23:01
stu.add(s);
不就是往集合里面传值了吗?怎么还为空呢?

那你测试下面的代码(和你现在遇到的情况一致):
String s = null;
System.out.println(s.length());
回复 使用道具 举报
你说的这个我明白、、、 students s=new students(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[1]),Integer.parseInt(info[1]));
   stu.add(s);
不明白的是 s不是空值  s传进去stu怎么是空值。。。。。。怎么改呢??
     

回复 使用道具 举报
java的对象要先new,再用,基本类型不用;String 则介于两者之间,可new,也可不。

导入包:import java.util.*;
改为:Set<students> stu=new HashSet<students>();
或用TreeSet,反正要new 一个类。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马