2014-03-14 71 views
0

我對這裏的情況非常難過。 我真的不知道爲什麼我得到這個空指針異常。用戶在java中輸入後的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; 
    } 
} 

我越來越對的空指針異常錯誤第一種方法的最後一行。 有什麼建議嗎?

+5

'reg'定義在哪裏?它初始化了嗎? – sanbhat

+0

「UI」如何被屏蔽? – epoch

+0

向我們展示堆棧跟蹤,以及在哪裏啓動'appts',我認爲這可能是一個問題,如果這是完整的代碼 – user902383

回答

0

我的猜測是(假設這是已完成的代碼),當您嘗試在Registry類中添加appts數組的新條目時,您會得到NPE

在你提供的代碼片段中,你永遠不會初始化你的數組。

+0

哦拍! ._。我的意思是最初創建一個arraylist而不是一個數組,所以我可以使用動態大小而不是一個數組。回到製圖板上 –

2

reg很可能是null

如果在概念上允許無效,則考慮在該方法周圍使用if (reg != null){。如果該方法執行時它不應該爲空,那麼確保在構造該對象時初始化它。

+1

在這個_specific_案例中,該行可以防止錯誤,但會中斷程序,它應該在被使用時初始化 – epoch

+0

當然,這取決於程序員:或許它可以爲空。它可能是一些無需附加的聽衆。我們根本不知道。但說,你可能是對的;-) – Bathsheba

+0

同意,只是想我會指出:) – epoch