2010-07-27 4 views
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 
      } 

Je dois convertir le PinInput d'un tableau de caractères en String, de sorte que je puisse utiliser la fonction isPasswordCorrect(). Quand j'utilise la méthode toString(), cela produit une valeur garbage, que dois-je faire pour convertir la valeur de PinInput en String?convertir la sortie de PinField.getPassword() en chaîne

+0

Veuillez considérer les réponses que vous avez trouvées positives. – trashgod

+0

Vous ne devez pas convertir le tableau en chaîne. Vérifiez l'exemple ici: http://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html –

Répondre

5

Regardez l'API String, il y a un constructeur qui accepte un tableau char.

+2

Merci, je l'ai trouvé public String (char [] valeur) – Gaurav

4

@camickr a raison. Ce n'est pas de la foutaise; pinField.getPassword().toString() montre l'adresse du char[], par ex. [[email protected].

Addendum: String.valueOf(array) ou new String(array) convertira le résultat de getPassword() à un String, mais contrecarre la prestation de sécurité de retourner un char[]. Pensez à garder la valeur locale et à suivre les directives de l'API: "il est recommandé que le tableau de caractères retourné soit effacé après utilisation en mettant chaque caractère à zéro."

+0

juste demander la connaissance (comme je l'ai eu le réponse), existe-t-il un moyen de convertir ce tableau cha [] en String? – Gaurav

+0

@Gaurav: 'String.valueOf()'. – trashgod

+0

et la méthode String.valueOf (array) utilise simplement "new String (array)". C'est une méthode de commodité. – camickr