2014-10-20 1 views
1

난 내 프로그램을 실행할 때 다음과 같은 오류 얻을 : 내가 문제를 식별 할 수없는 최선의 노력에도 불구하고이유는 오류가 점점 오전 : 주 "java.lang.NullPointerException이" "스레드에서 예외"

Exception in thread "main" java.lang.NullPointerException 
    at study.calendar.HomeWorkDiary.<init>(HomeWorkDiary.java:51) 
    at study.calendar.HomeworkTeftInterFace.main(HomeworkTeftInterFace.java:18) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 1 second) 

를 내가 그것이 내 프로그램을 선언하는 방식과 관련이 있다고 믿습니다.

이 문제를 확인하고 해결함으로써 도움을 받으실 수 있습니다. 제 문제에 대한 해결책을 제공해 주시면 대단히 감사하겠습니다. 인터페이스 클래스 :

public class HomeworkTeftInterFace { 
    public static void main(String[] args) { 
     HomeWorkDiary tefo = new HomeWorkDiary("test"); 
     String task1 = JOptionPane.showInputDialog("task"); 
     String subject1 = JOptionPane.showInputDialog("subject"); 
     double priorty1 = (Double.parseDouble(JOptionPane.showInputDialog("priorty"))); 
     int day1 = parseInt(JOptionPane.showInputDialog("due day")); 
     int month1 = parseInt(JOptionPane.showInputDialog("month")); 
     int year1 = parseInt(JOptionPane.showInputDialog("year")); 
     tefo.addTask(task1, subject1, priorty1, day1, month1, year1); 
    } 
} 

다음 클래스 :

public HomeWorkDiary(String filename) { 
//  System.out.println("test5"); 
     diary = new Homework[count + 50]; 
     count = 0; 
//  System.out.println("test6"); 
     try { 
      Scanner file = new Scanner(new File("HomeWork.txt")); 
      file.useDelimiter("#"); 
      while (file.hasNextLine()) { 
//    System.out.println("test3"); 
       String task = file.next(); 
       String subject = file.next(); 
//    System.out.println("test7"); 
       String priorty = file.next(); 
//    System.out.println("test9"); 
       String day = file.next(); 
       String month = file.next(); 
       String year = file.next(); 
//    System.out.println("test"); 
       diary[count].setTaks(task); 
       diary[count].setSubject(subject); 
       diary[count].setPrioity(Double.parseDouble(priorty)); 
       diary[count].setDay(parseInt(day)); 
       diary[count].setmonth(parseInt(month)); 
       diary[count].setyear(parseInt(year)); 
//    System.out.println("test 10"); 
       count++; 
       file.nextLine(); 
      } 
     } catch (FileNotFoundException f) { 

     } 
     System.out.println("test4"); 
    } 

    public void addTask(String task1, String subject1, double priorty1, int day1, int month1, int year1) { 
     diary[count].setTaks(task1); 
     diary[count].setSubject(subject1); 
     diary[count].setPrioity(priorty1); 
     diary[count].setDay(day1); 
     diary[count].setmonth(month1); 
     diary[count].setyear(year1); 
     count++; 
    } 

최종 배열 클래스와 관련 방법 :

public class Homework { 

    private String subject; 
    private String task; 
    private double priorty; 
    private int year; 
    private int month; 
    private int day; 

    Homework(String task, String subject, double priorty, int year, int month, int day) { 
     this.task = task; 
     this.subject = subject; 
     this.priorty = priorty; 
     this.year = year; 
     this.month = month; 
     this.day = day; 
    } 

    public void setTaks(String task1) { 
       System.out.println(task1); 
     task = task1; 
    } 

    public void setSubject(String subject1) { 
     System.out.println("test"); 
     subject = subject1; 
    } 

    public void setPrioity(double priorty1) { 
     priorty = priorty1; 
    } 

    public void setDay(int day1) { 
     day = day1; 
    } 

    public void setyear(int year1) { 
     year = year1; 
    } 

    public void setmonth(int month1) { 
     month = month1; 
    } 

이 조각 여기

문제 코드 코드의 전체 클래스가 아니라 오히려 내가 떨어지는 방법은 m과 관련이있다. y 질문.

+0

줄 51에 무엇이 있습니까 HomeWorkDiary.java –

+0

다음을 읽어주십시오. http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix -그것 –

답변

0

당신은 그래서 당신이 먼저 HomeWorkDiary 생성자에서 diary[count]=new HomeWork();로 초기화해야 diary[count]로 사용하기 전에 널 참조 HomeWork와 배열 diary 있습니다.

관련 문제