1

私には4つのクラスがあります。Project Class、Student Class、ProjectFile Class、ProjectFrameJFrame。

ProjectFrameはGUI専用であり、私はそれに触れていません。

StudentクラスとProjectクラスはコンストラクターであり、私はそれらをコーディングしました。

現在、テキストファイルから読み取り、読み取るデータを保存することでProjectFileクラスを実装しようとしています。プロジェクトクラスのインスタンスがデータを保存していない理由がわからないため、問題が発生しています。ループを確認し、変数を出力して、ループが実際に発生していることを確認しました。初めて動作しますが、2番目の配列を呼び出そうとすると、NullPointerExceptionが発生します。したがって、値をnullとして格納していると想定していますが、そうではないはずです。

これは私のProjectFileクラスです

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DecelAssignment;

import java.io.*;

/**
 *
 * @author Zane
 */
public class ProjectFile {

    private static Project[] pJect;
    private static Student[] sDent;
    private static Project ja;
    private static BufferedReader br;

    public static void readData() {
        File inputFile = new File("projects.txt");

        try {
            br = new BufferedReader(new FileReader(inputFile));
            String s = br.readLine();
            pJect = null;
            pJect = new Project[Integer.parseInt(s)];
            //System.out.println(s);
            for (int i = 0; i < pJect.length; i++) {
                s = br.readLine();
                if (s == null) {
                    break;
                } else {
                    String sLine[] = s.split(",");
                    int count = 3;
//                    for (int i2 = 0; i2 < Integer.parseInt(sLine[3]); i2++) {
//                        sDent[i2] = new Student(sLine[count+1], sLine[count+2], sLine[count+3], sLine[count+4]);
//                        count += 4;
//                    }
                    pJect[i] = new Project(sLine[0], sLine[1], sLine[2], sDent);
                    System.out.println(pJect[1].getTitle());
                    System.out.println(sLine[0]);
                    System.out.println(i);
                }
            }

        } catch (IOException e) {

            System.out.println("I caught an IO Exception1");
        }
//        } catch (NullPointerException e) {
//            e.printStackTrace();
//            System.out.println("I caught a Null Pointer Exception!");
//
//        }
    }

//    public Project[] getProjectInfo() {
//        
//        
//        return;
//    }
    public static void main(String[] args) {    
        readData();
    }
}

これは私が読んでいるテキストファイルです

3
iPhone App,EEE,John Tan,1,P109520,Kelvin Tay,DBIT,M
iPad App,DMIT,Mark Goh,3,P106286,Felicia Wong,DIT,F,P101803,Rachel Chang,DIT,F,P100036,Lewis Poh,DBIT,M
Green Living,DMIT,Audrey Lim,2,P101234,Peter Chua,DIT,M,P103287,Ng Ming Shu,DISM,F

誰かが私がこれを間違ってコーディングしているところを私に説明できますか?私はそれを理解することはできません。

編集:

これはプロジェクトクラスです

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DecelAssignment;

/**
 *
 * @author Zane
 */
public class Project {
    private String title, school, supervisor;
    private Student[] stDent;

    public Project() {
        title = "";
        school = "";
        supervisor = "";
        stDent = new Student[0];
    }

    public Student[] getStDent() {
        return stDent;
    }

    public Project(String title, String school, String supervisor, Student[] stDent) {
        this.title = title;
        this.school = school;
        this.supervisor = supervisor;
        this.stDent = stDent;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getSupervisor() {
        return supervisor;
    }

    public void setSupervisor(String supervisor) {
        this.supervisor = supervisor;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

}
4

1 に答える 1

4

私はあなたのコードがここでクラッシュすると思います

      System.out.println(pJect[1].getTitle());

最初のループでは、pJect [1]にnullが含まれ、クラッシュが発生します

あなたはおそらく意図している

      System.out.println(pJect[i].getTitle());
于 2012-05-13T18:31:22.693 に答える