0

我正在编写一个 GUI 程序,它具有 JPasswordField 来接收来自用户的文本。然后我使用这个将这个值转换为字符串,如下所示:

 char[] pass = txtPass.getPassword(); //where txtPass is the JPasswordField
 System.out.println("Password:");
 ////////////////Check password/////
 for (int i=0; i< pass.length; i++)
    System.out.println(pass[i]);

 System.out.println("String pass"+ pass.toString());

但是,我执行应用程序的所有内容,我都会收到与 pass.toString() 不同的内容。我希望它们是独一无二的,这样我就可以在上面做更多的密码学功能。

4

4 回答 4

2

Try

System.out.println( "String pass: " + new String( pass ) );

For the very large exponent use Exponentiation by squaring - http://en.wikipedia.org/wiki/Exponentiation_by_squaring

于 2012-05-02T11:03:46.023 回答
1

The toString function on array will not return the characters in the array. Try this instead:

char[] pass = txtPass.getPassword(); //where txtPass is the JPasswordField
 System.out.println("Password:");
 ////////////////Check password/////
 for (int i=0; i< pass.length; i++)
    System.out.println(pass[i]);

 System.out.println("String pass"+ new String(pass));

This will create a new string containing the characters from the array.

于 2012-05-02T11:04:48.787 回答
0

刚读了Java SDK API,它说得很清楚,

另请参见JPasswordField 的 toString

public String toString() { return getClass().getName() + "[" + paramString() + "]";}

toString 方法返回整个 Swing 组件的 toString,因此 getClass().getName() + paramString()。而 getPassword 方法返回输入到组件密码字段中的实际密码。

于 2012-05-02T11:07:53.437 回答
0

代替

System.out.println("字符串传递"+ pass.toString());

您可以使用

System.out.println("String pass"+ String.valueOf(pass));

哪个可以满足您的要求。

于 2012-05-02T11:08:51.720 回答