2013-03-18 108 views
0

當我將getters和setter放入方法中,然後在main方法中調用該方法時,儘管將該值設置爲其他值,我仍然得到null值!另外,我沒有收到編譯器的任何錯誤,所以我確定這是一個邏輯錯誤,但我無法弄清楚。getter和setter變爲空

這是包含問題方法的類:

public class URTest { 
UserRegistration _user = new UserRegistration(); 
public static void main(String[] args) { 
    String fieldName; 
    UserRegistration _user = new UserRegistration(); 
    URTest _run = new URTest(); 
    Scanner input = new Scanner(System.in); 
    fieldName = input.nextLine(); 
    _run.test(fieldName); 
    System.out.println(_user.getUsername()); 
} 

public void test(String fieldName) { 
    UserRegistration _user = new UserRegistration(); 
    Scanner input = new Scanner(System.in); 
    String result; 
    System.out.print("Enter " + fieldName + ": "); 
    result = input.nextLine(); 
     while(true) { 
      if(result.equals("")) { 
       System.out.print("Please enter a value for the " + fieldName + ": "); 
       result = input.nextLine(); 
      } else { 
       break; 
      } 
      if(fieldName.equals("username")) { 
       _user.setUsername(result); 
      } 
} 

} }

這裏是類包含我的getter和setter方法:

import java.io.Serializable; 

public class UserRegistration implements Serializable { 

private String username; 
private int userId; 
private String firstName; 
private String lastName; 
private String password; 
private String email; 

public UserRegistration() { 
    this.username = username; 
    this.userId = userId; 
} 

public UserRegistration(String uName, int id, String uPassword) { 
    this.username = uName; 
    this.userId = id; 
    this.password = uPassword; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public int getUserId() { 
    return userId; 
} 

public void setUserId(int userId) { 
    this.userId = userId; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

@Override 
public String toString() { 
    String name = getFirstName() + getLastName(); 
    String output = name + "has the user id " + getUserId() + 
      "username " + getUsername() + " and email " + getEmail(); 
    return output; 
} 

}

回答

4

您正在致電

​​

而在你的類

public UserRegistration() { 
    this.username = username; 
    this.userId = userId; 
} 

當上述構造函數將被調用,沒有被設置爲成員變量的值,因此你越來越空

在你調用的方法,

UserRegistration _user = new UserRegistration("name","id1"); 

OR

在您的構造函數中設置默認值:

public UserRegistration() { 
     this.username = "name"; 
     this.userId = "id1"; 
    } 
+0

謝謝,我看到我出錯了,並認爲我知道如何解決問題! – 2013-03-18 01:54:21

+3

@CuckoOooo - 如果有幫助,請接受答案 – Abi 2013-03-18 01:59:18

+0

@CuckoOooo請注意,考慮鏈接構造函數:http://stackoverflow.com/questions/285177/how-do-i-call-one-constructor-from-another -in-java的 – tjameson 2013-03-18 02:13:51