0

ゲッターとセッターをメソッドに配置し、そのメソッドをmainメソッドで呼び出すと、値を別の値に設定したにもかかわらず、nullの値が取得されます。また、コンパイラからエラーが出ていないので、どこかで論理的なエラーだと思いますが、わかりません。

これは、問題のメソッドを含むクラスからのものです。

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);
            }
}

}}

これが私のゲッターとセッターを含むクラスです:

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

1 に答える 1

4

あなたが呼んでいる

UserRegistration _user = new UserRegistration();

そしてあなたのクラスで

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

上記のコンストラクターが呼び出されると、メンバー変数に設定する値がないため、nullが発生します

呼び出しメソッドで、

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

また

コンストラクターでデフォルト値を設定します。

public UserRegistration() {
        this.username = "name";
        this.userId = "id1";
    }
于 2013-03-18T01:40:06.627 に答える