преобразовать вывод PinField.getPassword () в строку - PullRequest
4 голосов
/ 28 июля 2010
        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 из символьного массива в String, чтобы я мог использовать функцию isPasswordCorrect ().Когда я использую метод toString (), он выдает значение мусора, что мне делать, чтобы преобразовать значение PinInput в String?

Ответы [ 2 ]

5 голосов
/ 28 июля 2010

Посмотрите на API String, есть конструктор, который принимает массив символов.

4 голосов
/ 28 июля 2010

@ camickr прав.Это не мусор;pinField.getPassword().toString() показывает адрес char[], например, [C@fd54d6.

Приложение: String.valueOf(array) или new String(array) преобразует результат getPassword() в String, но это сводит на нет все преимущества, связанные с возвратом char[].Рассмотрите возможность сохранения значения локальным и следуйте рекомендациям API: «рекомендуется, чтобы возвращаемый массив символов очищался после использования, устанавливая каждый символ в ноль».

...