0

常にelse条件に進みます。比較にもchar []を使用しましたが、構文ではなく論理エラーがあるようです。

    JButton Logb = new JButton("Go");
    String name="Wijdan";
    char[] password=passwordField.getPassword();
    char[] pass=new char[]{'l','o','g','i','n'};

    Logb.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) { 
            if(namefield.getText().equals(name) && Arrays.equals(password, pass)){
            namefield.setText("brr");
            passwordField.setText("brr");
            }
            else {
                JOptionPane.showMessageDialog(null, "Invalid username or password");


            }
        }
    });
    Logb.setFont(new Font("Tahoma", Font.PLAIN, 25));
    Logb.setBounds(180, 190, 89, 39);
    contentPane.add(Logb);
}
4

1 に答える 1

0

ユーザーがパスワードを入力する前に getPassword() を呼び出しています。最初にフォームに表示された空のパスワードではなく、実際に入力されたパスワードを比較するように、getPassword() 呼び出しを actionPerformed() メソッドに移動する必要があります。

また、コードがどのように機能するかを理解するために、デバッガーの使用を検討してください。actionPerformed() メソッド内にブレークポイントを設定すると、比較されている正確な値を確認し、それらが正しくない理由を理解できます。

于 2016-01-24T06:28:35.010 に答える