【问题标题】:Comparison error when comparing a value from hashmap to a normal string将 hashmap 中的值与普通字符串进行比较时出现比较错误
【发布时间】:2021-09-15 12:10:44
【问题描述】:

我有一个字符串值存储在一个名为userPassword 的变量中,这是我使用扫描仪从用户那里得到的。我也有这样的哈希图:

Key Value
username1 password1
username2 password2
username3 password3

我有一个变量userPassword,其值为123,还有一个hashmap 中的值也是123

public class Authentication {
    public void verifyLogin(LoginDetailsPojo userLoginDetailsObj, Map<String,String> map){
    //Passing a object and hash map as parameters
        String userPassword = userLoginDetailsObj.password;
        System.out.println(userPassword);//Printing "123"
        String mapPassword = map.get(userLoginDetailsObj.userName);
        System.out.println(mapPassword); //Printing "123"
        if(userPassword.equals(mapPassword))
            System.out.println("it is equal");
        }
    }
}

即使两个变量(userPasswordmapPassword)具有相同的值 123if 块也不会执行

【问题讨论】:

  • 执行System.out.println( "&gt;" + userPassword + "&lt;");mapPassword 相同,以确保周围没有前导空格

标签: java hashmap equals


【解决方案1】:

试试这个,我添加了 trim() 来删除任何头部或尾部空格

public class Authentication {
    public void verifyLogin(LoginDetailsPojo userLoginDetailsObj, Map<String,String> map){
    //Passing a object and hash map as parameters
        String userPassword = userLoginDetailsObj.password;
        System.out.println(userPassword);//Printing "123"
        String mapPassword = map.get(userLoginDetailsObj.userName);
        System.out.println(mapPassword); //Printing "123"
        if(userPassword.trim().equals(mapPassword.trim()))
            System.out.println("it is equal");
        }
    }
}

【讨论】:

  • 从 java 11 开始使用 strip 而不是 trimRefer
  • 是的,我已经尝试过 .trim(),它不起作用,strip() 工作正常 tq
猜你喜欢
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多