如何在if语句中将对象与用户输入进行比较

问题描述

我正在尝试将用户输入(用户名和密码)与用户对象(例如,user1,user5)进行比较,以查看它们是否匹配,如果匹配,则该用户将被定向到另一个活动,因为他们本来可以成功登录,否则将显示一条消息。 我创建了一个名为User的类,我通过调用该类来获取userName和密码。我认为,如果使用if语句可以使用.equal进行比较,但是无论输入是否正确,我尝试应用时都会显示详细信息不正确的消息。就像它完全忽略了除最后一个语句以外的所有if语句。谁能告诉我是否有更好的方法可以实现这一目标,或者我的代码中有错误吗?错误不会在任何地方显示

用户类别:

public class User {

// Instance variables
static String userName;
static String password;
static String favColor;


// User constructor
public User(String initUserName,String initPassword,String initFavColor) {
    userName = initUserName;
    password = initPassword;
    favColor = initFavColor;

}

// Getter method to return userName
public String getUserName(){
    return userName;
}

public String getpassword(){
    return password;
}

public String getFavColor(){
    return favColor;
}

主要活动:

    logInBt.setonClickListener(new View.OnClickListener() {
        public void  onClick(View view) {

            User user1 = new User("Jason","Sword","Red");
            User user2 = new User("Billy","Dinosaur","Blue");
            User user3 = new User("Zack","Elephant","Black");
            User user4 = new User("Trini","Tiger","Yellow");
            User user5 = new User("Kimberly","Bird","Pink");

            String userET = userEditText.getText().toString();
            String userPassword = passwordEditText.getText().toString();

            if(userET.equals(user1.getUserName()) & userPassword.equals(user1.getpassword())){

                Intent i = new Intent(getApplicationContext(),MainMenu.class);
                startActivity(i);

            } else if(userET.equals(user2.getUserName()) && userPassword.equals(user2.getpassword())){

                Intent i = new Intent(getApplicationContext(),MainMenu.class);
                startActivity(i);

            }else {
                Toast.makeText(getApplicationContext(),"Incorrect details. Please try again",Toast.LENGTH_SHORT).show();

            }



        }

});

解决方法

对象的属性不能为静态类型, 在使用应用程序时保留静态值, 因此,每次创建该对象的实例时,它都会获取一个新值

解:
public class User {

//Instance variables
private String userName;
private String password;
private String favColor;


// User constructor
public User(String userName,String password,String favColor) {
    this.userName = userName;
    this.password = password;
    this.favColor = favColor;

}

// Getter method to return userName
public String getUserName(){
    return userName;
}

public String getPassword(){
    return password;
}

public String getFavColor(){
    return favColor;
}
}

我建议您阅读有关static variables

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...