3

エコーを無効にしてパスワードをマスクしようとしていますが、機能していません....

マスキングとは、パスワード自体の代わりに*を出力することを意味します....

そして、コンソールの機能を調べましたが、readPasswordエコーを無効にするだけです。

初心者なので詳しく教えて...

import java.io.*;
import java.util.*;
//import java.nio.charset.Charset;
//import sun.nio.cs.StreamDecoder;
//import sun.nio.cs.StreamEncoder;
/*class output1 extends OutputStream
{
public void write(int b)
{

}
}
class input1 extends InputStream
{

}*/

class testi
{
static native boolean echo(boolean on) throws IOException;
public static void main(String args[]) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//PrintStream out1;
System.out.println("Enter a line: ");
try {
            //cin = new InputStreamReader(System.in);
            //out1=new PrintStream(OutputStream out);
            int c;
            while ((c = br.read()) != -1) {
                //out1.write((int)('*'));
                echo(false);
                System.out.print("*");
            }
            echo(true);
    } finally {
        if (br != null) {
            br.close();
        }
        /*if (out1 != null) {
            out1.close();
        }*/
    }
}
}

これは、コンソール (cmd) で実行されます。

事前にサンクス... :)

PS私はプログラミングが下手です

4

2 に答える 2

2

これはあなたの見方に対する答えを解決しないかもしれませんが、入力をすべて非表示にするのはどうですか? 以下のリンクをご覧ください。

http://www.tutorialspoint.com/java/io/console_readpassword.htm

于 2013-06-29T22:24:08.337 に答える
2

これがあなたが探しているものかどうかはわかりませんが、コンソールでアプリを実行している場合でも、 をJOptionPane使用できます。JPasswordField

http://blogger.ziesemer.com/2007/03/java-password-dialog.htmlの例を次に示します。

final JPasswordField jpf = new JPasswordField();

JOptionPane jop = new JOptionPane(jpf, JOptionPane.QUESTION_MESSAGE,
        JOptionPane.OK_CANCEL_OPTION);

JDialog dialog = jop.createDialog("Password:");
dialog.addComponentListener(new ComponentAdapter() {
    @Override
    public void componentShown(ComponentEvent e) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                jpf.requestFocusInWindow();
            }
        });
    }
});
dialog.setVisible(true);
int result = (Integer) jop.getValue();
dialog.dispose();
char[] password = null;
if (result == JOptionPane.OK_OPTION) {
    password = jpf.getPassword();
}
if (password != null)
    System.out.println("your password: " + new String(password));
于 2013-06-29T22:35:35.747 に答える