gpt4 book ai didi

java - JPasswordField 验证

转载 作者:行者123 更新时间:2023-11-29 05:43:50 25 4
gpt4 key购买 nike

我关注了this Oracles tutorial关于 JPasswordField,我创建了一个简单的演示应用程序:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.SwingUtilities;

public class JPasswordFieldDemo {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JPasswordField passwordField = new JPasswordField(20);
JButton button = new JButton("Login");

public JPasswordFieldDemo() {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
char[] input = passwordField.getPassword();
if (performCheck(input)) {
JOptionPane.showMessageDialog(null, "Correct password");
} else {
JOptionPane.showMessageDialog(null, "Incorrect password");
}
}
});
passwordField.setEchoChar('*');
panel.add(passwordField);
panel.add(button);

frame.add(panel);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

private boolean performCheck(char[] input) {
boolean isCorrect = false;
char[] correctPass = { '1', '2', '3' };

if (input.length != correctPass.length) {
isCorrect = false;
}
if (Arrays.equals(input, correctPass)) {
isCorrect = true;
}
Arrays.fill(correctPass, '0');

return isCorrect;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JPasswordFieldDemo();
}
});
}
}

现在,让我感到困惑的部分是 performCheck 方法。我的问题是:

我应该比较两个 char 数组的长度(就像他们在教程中所做的那样)有什么充分的理由吗?

或者我的方法也可以是这样的:

private boolean performCheck(char[] input) {
boolean isCorrect = false;
char[] correctPass = { '1', '2', '3' };

if (Arrays.equals(input, correctPass)) {
isCorrect = true;
}
Arrays.fill(correctPass, '0');

return isCorrect;
}

此致,并提前致谢。

最佳答案

您的示例未反射(reflect) tutorial 中显示的谓词,它首先检查长度,然后仅当长度匹配时才检查内容。长度不等的数组永远不会相等。

if (input.length != correctPassword.length) {
isCorrect = false;
} else {
isCorrect = Arrays.equals (input, correctPassword);
}

关于java - JPasswordField 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com