4
        if ("Submit".equals(cmd)) { //Process the password.
    String UserNameInput=UserName.getText();
    ///////////////////////////////ERROR Pin when printed shows error/////////////////////////////
    char[] PinInput = PinField.getPassword();
    String pinInput=PinInput.toString();
            //for debugging , print PinInput , but it prints garbage
    System.out.println("Pin entered is "+PinInput);
            //pinInput has garabage instead of the Pin that was entered
            //so the function isPasswordCorrect fails to verify UserName & Pin
    if (isPasswordCorrect(UserNameInput,pinInput)) 
              {
               //some tasks
              }
         }
            boolean isPasswordCorrect(String Username,String Pin)
            {
             //verify username & pin 
            }

我需要将 PinInput 从字符数组转换为字符串,以便我可以使用函数 isPasswordCorrect() 。当我使用 toString() 方法时,它会产生垃圾值,我应该如何将 PinInput 的值转换为 String ?

4

2 回答 2

6

查看String API,有一个接受char数组的构造函数。

于 2010-07-27T20:17:29.643 回答
4

@camickr 是对的。那不是垃圾。pinField.getPassword().toString()显示 的地址char[],例如[C@fd54d6

附录:String.valueOf(array)ornew String(array)会将结果转换getPassword()为 a String,但这阻碍了返回 a 的安全性好处char[]。考虑将值保持在本地并遵循 API 指南:“建议在使用后通过将每个字符设置为零来清除返回的字符数组。”

于 2010-07-27T20:28:04.203 回答