Tim_Wang__ 2017-01-21 06:26 采纳率: 50%
浏览 1373
已采纳

输入输出流,运行不成功

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class SortSex {

public static void main(String[] args) throws IOException {
    // TODO 自动生成的方法存根

    File f1=new File("c:\\Users\\11202\\Desktop\\学生信息.txt");
    File f2=new File("c:\\Users\\11202\\Desktop\\aaa.txt");

    FileReader fr = new FileReader(f1);
    BufferedReader cin=new BufferedReader(fr);
    FileWriter fw = new FileWriter(f2);
    BufferedWriter cout=new BufferedWriter(fw);
    Student[] student=new Student[1000];
    String s="";int i=0;
        while((s=cin.readLine())!=null)
        {
            student[i]=new Student();
            String[] a=new String[6];
            a=s.split(" ");
            student[i].setName(a[0]);;
            student[i].setNum(a[1]);
            student[i].setSex(a[2]);;
            student[i].setGrade(a[3]);
            student[i].setBanji(a[4]);
            student[i].setScore(a[5]);
            i++;
        }
    for(int t=0;t<student.length;t++){
        if(student[t].getSex()=="男"){
            cout.write(student[t].getStudent());
        }
    }
    fr.close();
    fw.close();
}

}

Exception in thread "main" java.lang.NullPointerException
at SortSex.main(SortSex.java:37)

注:
public class Student {

private String name;
private String num;
private String sex;
private String grade;
private String banji;
private String score;

public Student(String name, String num, String sex, String grade, String banji, String score) 
{
    this.name = name;
    this.num = num;
    this.sex = sex;
    this.grade = grade;
    this.banji = banji;
    this.score = score;
}

public Student() 
{
    this.name = "未知";
    this.num = "未知";
    this.sex = "未知";
    this.grade = "未知";
    this.banji = "未知";
    this.score = "未知";
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getNum() {
    return num;
}

public void setNum(String num) {
    this.num = num;
}

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

public String getGrade() {
    return grade;
}

public void setGrade(String grade) {
    this.grade = grade;
}

public String getBanji() {
    return banji;
}

public void setBanji(String banji) {
    this.banji = banji;
}

public String getScore() {
    return score;
}

public void setScore(String score) {
    this.score = score;
}

public String getStudent() {
    return name+"   "+num+" "+sex+" "+grade+"   "+banji+"   "+score;
}

}

  • 写回答

1条回答 默认 最新

  • little_how 2017-01-21 06:49
    关注

    简单的看了一下你的逻辑,出错应该是你的student数组申明的是1000的长度,
    而你文件读取的信息不足1000个,那么后面就会出现如student[999] = null的情形;
    那么你的if(student[t].getSex()=="男"){
    cout.write(student[t].getStudent());
    }
    中出现第一个student为null的时候,就会出现空指针;

                所以建议你用list来存储
    
                也可以这么写来弥补使错误
    

    for(int t=0;t<student.length;t++){
    Student stu = student[t];
    if(stu == null) break;
    if(stu.getSex()=="男"){
    cout.write(stu.getStudent());
    }
    }

    如果有帮助,希望采纳....

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试