1

私はJavaが初めてで、ユーザーのパスワード入力をマスク/非表示にする方法を知りたい. パスワードが非表示になるように、ユーザーが何かを入力するたびにアスタリスク (*) を表示するプログラムが必要です。私のパスワード プログラムだけで (マスキングなしで) 動作します。ユーザーはパスワードを入力し、その後は 3 回しか試行できません。ユーザーがアスタリスクで入力するものは何でもマスクしたいと思います。

マスキングの使い方をネットで調べたのですが、よくわかりません。私のプログラムは何度もマスクに失敗しました。私は Java に本当に慣れていないので、私のものにはない他のコードを使用する場合は. 可能であれば説明してください。ありがとう。

これが私の最初のコードです: import java.io.*; import javax.swing.JPasswordField;

 public class Capture_Password {
 public static void main(String[] args) {

 BufferedReader loopin=new BufferedReader (new InputStreamReader (System.in));
 JPasswordField passwordFld = new JPasswordField();

 final double pinno=12345;
 double ca;
 String attempt;

 try
 {
 System.out.println("Please enter the 5-digit PIN code:");
 attempt=loopin.readLine();
 ca=Double.parseDouble(attempt);

  if(ca==pinno)
    {
        System.out.println("Congratulations! You have entered the correct PIN code!");
    }

  else
    { 
            for(int tryleft=3; tryleft>=0 && ca!=pinno; tryleft--)
            {
                System.out.println("Sorry, you have entered the wrong PIN code");
                System.out.println("You have " + tryleft + " try/tries left");

                System.out.println();

                if(tryleft==0)
                    {
                        System.out.println("That was your last attempt, goodbye!");
                    }

                System.out.println();

                if(tryleft>0)
                {
                    System.out.println("Please enter the 5-digit PIN code:");
                    attempt=loopin.readLine();
                    ca=Double.parseDouble(attempt);
                }    

                if(ca==pinno)
                    {
                        System.out.println("Congratulations! You have entered the correct PIN code!");
                    }

            }   

            }



  }

 catch(Exception e)
 {
    System.out.println("ERROR");
 }
 }}

もう 1 つは次のとおりです。

 public class JPasswordField{
  public String getEchoString(){

       return "*";

 }
 }

皆さん、助けてくれて本当にありがとう!

4

2 に答える 2

0

なぜあなたはスイングフレームワークを使わないのですか####それが役立つ例を見てください

  import java.io.*;
  import javax.swing.*;
   import java.awt.*;
  class Experiment 
 {
    /*declaration */

        JFrame frame; 
        JPanel panel;
        JLabel label1, label2, label3;
        JTextField tf1;
        JPasswordField tf2;
        JButton button;
        String S1,S2,S3,S4;


        /*declaration ended */


Experiment()
    {




        /*memory initialization */

        frame = new JFrame("Eraser");
        panel = new JPanel();
        label1 = new JLabel("Sentence 1");
        label2 = new JLabel("What to Erase");
        label3 = new JLabel("");
        tf1 = new JTextField(20);
        tf2 = new JPasswordField(20);
        button = new JButton("Erase");


       /*memory initialization ended */



        /*containment*/

                frame.add(panel, BorderLayout.CENTER);
                panel.add(label1);
                panel.add(tf1);
                panel.add(label2);
                panel.add(tf2);
                panel.add(label3);
                panel.add(button);


        /*containment ended*/

    Toolkit tk = Toolkit.getDefaultToolkit();  
    int frame_width = ((int) tk.getScreenSize().getWidth());  
    int frame_height= ((int) tk.getScreenSize().getHeight());  

/*button-configuration*/
     button.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            buttonActionPerformed(evt);
        }
    });


 /*close-button-configuration*/


/* open - frame configuration */
    frame.setLocation(frame_width/2 - 125, frame_height/2 - 65);

    frame.setSize(250,190);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    /* close - frame configuration */










     }
    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {
    /*LOGIC*/


            S1= tf1.getText();
            S2= tf2.getText();


            S3 = S1.replace(S2,"");

         JOptionPane.showMessageDialog(null,S3);


            /*LOGIC ENDED   */
  }


  public static void main (String[]args)throws Exception 
  {

     Experiment object = new Experiment();





  }
}

### どうしてもコンソールを使用したい場合は、http://docs.oracle.com/javase/7/docs/api/java/io/Console.html#readPassword%28%29 をお読みください。ただし、少なくともJava 6。.これは Eclipse コンソールでは機能しません#####

于 2013-10-05T10:02:42.710 に答える