2014-03-14 3 views
0

저는 여기 상황이 아주 어려워요. 왜이 null 포인터 예외가 발생하는지 잘 모르겠습니다. 여기 내 클래스 중 하나의 방법입니다 //자바에서 사용자가 입력 한 후 NullPointerException이 발생했습니다.

public class UI { 

    Registry reg; 

    public UI (Registry reg) { 
     this.reg = reg; 
     menu(); 
    } 

    private void addAppts(Scanner sc) { 
     System.out.println("Enter the month for appointment in mm/dd/yyyy format:"); 
     sc.nextLine(); 
     int month = sc.nextInt(); 
     System.out.println("Enter the day for appointment mm/dd/yyyy format:"); 
     sc.nextLine(); 
     int day = sc.nextInt(); 
     System.out.println("Enter the year for appointment mm/dd/yyyy format:"); 
     sc.nextLine(); 
     int year = sc.nextInt(); 
     System.out.println("Enter the hour for appointment:"); 
     sc.nextLine(); 
     int hour = sc.nextInt(); 
     System.out.println("Enter the minute for appointment:"); 
     sc.nextLine(); 
     int minute = sc.nextInt(); 
     System.out.println("Enter the owner name for appointment:"); 
     sc.nextLine(); 
     String ownerName = sc.nextLine(); 
     reg.addAppts(month, day, year, hour, minute, ownerName); 
    } 
} 

// 여기가

public class Registry { 

    private Appointments[] appts; 

    public void addAppts(int month, int day, int year, int hour, int minute, String ownerName) { 
     if (next < appts.length) { 
      Appointments e = new Appointments(month, day, year, hour, minute, ownerName); 
      appts[next++] = e; 
     } 
    } 
} 

public class Appointments { 

    private int month, day, year, hour, minute; 
    private String ownerName; 

    public Appointments(int month, int day, int year, int hour, int minute, String ownerName) { 
     this.month = month; 
     this.day = day; 
     this.year = year; 
     this.hour = hour; 
     this.minute = minute; 
     this.ownerName = ownerName; 
    } 
} 

나는에 nullpointer 예외 오류를 받고 있어요 내 다른 클래스에서 다른 방법 첫 번째 방법의 마지막 줄. 제안 사항이 있으십니까?

+5

여기서 'reg'는 정의되어 있습니까? 그것은 초기화 되었습니까? – sanbhat

+0

'UI'는 어떻게 시작됩니까? – epoch

+0

우리에게 스택 추적을 보여주고, 어디에서'appts'를 시작했는지, 이것이 완전한 코드라면 문제가 될 것이라고 생각합니다. – user902383

답변

0

내 생각에을 입력하면 Registry 클래스에 appts 배열에 새 항목을 추가하려고합니다.

당신이 제공 한 발췌 문장에서 결코 당신의 배열을 초기화하지 마십시오.

+0

오 촬영! ._. 원래 어레이가 아닌 arraylist를 만들려고했는데, 그래서 배열 대신 동적 크기로 작업 할 수 있습니다. 그림판으로 다시 쏴 –

2

regnull 이상입니다.

nullness가 개념적으로 허용되는 경우이 방법을 사용하여 if (reg != null){을 사용해보십시오. 이 메소드가 실행될 때까지 null이되어서는 안되는 경우, 객체가 구축 될 때 초기화되도록 (듯이)합니다.

+1

이 _specific_의 경우에 행이 오류를 방지하지만 프로그램을 중단 시키면 사용 시간에 의해 초기화됩니다. – epoch

+0

물론 프로그래머에게 있습니다 : 아마도 * null 일 수 있습니다. 첨부 할 필요가없는 청취자 일 수도 있습니다. 우리는 단순히 모릅니다. 그러나 그것을 말하면, 아마 맞을 것입니다 .-) – Bathsheba

+0

동의, 그냥 지적 해 줄 것입니다. – epoch

관련 문제