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 
            }

関数 isPasswordCorrect() を使用できるように、PinInput を文字配列から文字列に変換する必要があります。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()String、これは を返すセキュリティ上の利点を妨げchar[]ます。値をローカルに保ち、API ガイドラインに従うことを検討してください。

于 2010-07-27T20:28:04.203 に答える