두 개의 양식, 등록 양식 및 레코드 검색, 삭제 등을위한 다른 양식이 있습니다. 등록 양식에서 등록 정보를 개체에 넣은 다음 해시 맵에 저장합니다. 두 번째 양식에서 나는 해시 맵에 액세스하여 저장된 ID (키)에 따라 레코드를 검색합니다.해시 맵에서 레코드 가져 오기
내 문제는 레코드를 저장하고 두 번째 폼 (해시 맵 액세스)에서 액세스 할 때 null 포인터 예외가 발생합니다.
등록 양식 코드 :
여기Maps storage=new Maps();
private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {
try{
String firstName=txtFirstName.getText();
String initials=txtInitials.getText();
String birthDay=cmbBirthDay.getSelectedItem().toString();
String birthMonth=cmbBirthMonth.getSelectedItem().toString();
String birthYear=txtBirthYear.getText();
String Gender=cmbGender.getSelectedItem().toString();
String address=txtAddress.getText();
String tele=txtTele.getText();
String membershipType="";
String paymentType="";
String memberid=txtMemberId.getText();
if(rbPlatinum.isSelected());{
membershipType=rbPlatinum.getText();
}
if(rbGold.isSelected());
{
membershipType=rbGold.getText();
}
if(rbSilver.isSelected());
{
membershipType=rbSilver.getText();
}
if(rbAnually.isSelected());{
paymentType=rbAnually.getText();
}
if(rbSemi.isSelected());{
paymentType=rbSemi.getText();
}
if(rbMonthly.isSelected());{
paymentType=rbMonthly.getText();
}
Members newMember=new Members(firstName,initials,birthDay,birthMonth,birthYear,Gender,memberid,address,tele,membershipType,paymentType);
storage.setMemberMap(memberid, newMember);
JOptionPane.showMessageDialog(frame,"Successfully Registered");
}catch(Exception e){
JOptionPane.showMessageDialog(frame,"ERROR!");
e.getStackTrace();
}
}
이지도 클래스입니다
다음내가 한 일이다 (I 내가 검색 한 키에 저장 한 기록이 경우에도 null 포인터 예외가) (모든 맵이 클래스에) : 여기
public class Maps {
public Maps(){}
Map<String,Members> memberMap=new HashMap();
//returns the memberMap
public Map<String, Members> getMemberMap() {
return memberMap;
}
//add items to map
public void setMemberMap(String key,Members object) {
memberMap.put(key,object);
}
}
내가 두 번째 형태로 사용하는 코드가 기록을 검색하는 것입니다 : -
Maps storage=new Maps();
private void btnSearchMemberActionPerformed(java.awt.event.ActionEvent evt) {
String memberID=txtSearchId.getText();
//get the record and display
txtArea.setText(storage.getMemberMap().get(memberID).toString());
}
여기에 무슨 문제가있는 것 같습니까?
감사합니다.
'storage'를 두 번 인스턴스화하는 이유는 무엇입니까? – varnie
두 번째 인스턴스는 다른 형태입니다. (두 번째 양식) –
잘못되었습니다. 문제를 올바르게 이해했다면 모든 양식을 통해 전 세계에서 개체 (지도)에 액세스 할 수 있기를 바랍니다. 그래서 그것의 단일 인스턴스가 있어야합니다. 문제에 관해서 : map은 문자열을하려고하는 키 'memberID'를 가진 아이템이 없다면'null'을 리턴합니다. null에서 toString()을 호출하면 예외가 발생합니다. – varnie