gpt4 book ai didi

Java如何将数组中的变量分配给另一个数组

转载 作者:行者123 更新时间:2023-12-01 17:47:42 25 4
gpt4 key购买 nike

好的,所以我正在尝试在 java swing 中制作银行应用程序的登录屏幕。我必须让用户在登录屏幕中输入他的登录名、密码和 ID;问题是用户可以输入任何 ID 并通过登录屏幕。BankGlowna() 是显示登录屏幕之后的窗口的方法。代码如下:

        Connection c = null;
Statement stmt = null;

int countLogin = 0;
int countPwd = 0;
int countIDs = 0;

String[] logins = new String[50];
String[] pwds = new String[50];
String[] ids = new String[50];

try {
String url = "jdbc:sqlite:D:\\SQLiteDB\\Bank.db";
c = DriverManager.getConnection(url);
c.setAutoCommit(false);

stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Logins;");

while (rs.next()) {
id = rs.getString("IDLogin");
login = rs.getString("Login");
pwd = rs.getString("Password");

if (countIDs < ids.length) {
ids[countIDs] = id;
countIDs++;
}

if (countLogin < logins.length) {
logins[countLogin] = login;
countLogin++;
}

if (countPwd < pwds.length) {
pwds[countPwd] = pwd;
countPwd++;
}
}
}
catch (Exception ex) {
System.out.println(ex);
}

JFrame loginFrame = new JFrame("Bank");
loginFrame.setSize(400, 400);

JLabel loginLabel = new JLabel("Login:");
loginLabel.setBounds(5, 10, 200, 20);

JTextField loginText = new JTextField();
loginText.setBounds(5, 30, 200 ,20);

JLabel pwdLabel = new JLabel("Hasło: ");
pwdLabel.setBounds(5, 50, 200 ,20);

JPasswordField pwdField = new JPasswordField();
pwdField.setBounds(5, 70, 200, 20);

JLabel idLabel = new JLabel("ID:");
idLabel.setBounds(5, 90, 200, 20);

JTextField idTF = new JTextField();
idTF.setBounds(5, 110, 200 ,20);

JButton loginButton = new JButton("Zaloguj");
loginButton.setBounds(5, 140, 200, 20);

loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
loginChk = loginText.getText();
pwdChk = new String(pwdField.getPassword());
idChk = idTF.getText();

for (int i = 0; i < logins.length; i++) {
if (loginText.getText().equals(logins[i])) {
for (int a = 0; a < pwds.length; a++) {
if (pwdChk.equals(pwds[a])) {
for (int c = 0; c < ids.length; c++) {
if (idChk.equals(ids[c])) {
idDoKonta = ids[c];
loginFrame.dispose();
BankGlowna();
}
}
}
}
}
}
}
});

loginFrame.setVisible(true);
loginFrame.setLayout(null);
loginFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
loginFrame.add(loginLabel);
loginFrame.add(loginText);
loginFrame.add(pwdLabel);
loginFrame.add(pwdField);
loginFrame.add(loginButton);
loginFrame.add(idLabel);
loginFrame.add(idTF);
}```

最佳答案

当您从数据库传输数据时,您应该将与每个用户关联的信息放在数组中的相同位置,因为它们位于同一行。因此,与 logins[0] 关联的密码和 ID 是 pwds[0]ids[0];因此,您可以在对用户进行身份验证时使用它。您的 ActionListener 代码:

@Override
public void actionPerformed(ActionEvent e) {
loginChk = loginText.getText();
pwdChk = new String(pwdField.getPassword());
idChk = idTF.getText();

for (int i = 0; i < logins.length; i++) {
if (loginChk.equals(logins[i])) {
// Then EVERYTHING should be at index i
if (pwdChk.equals(pwds[i]) && idChk.equals(ids[i])) {
// user authenticated
idDoKonta = ids[i];
loginFrame.dispose();
BankGlowna();
return; // leave the function so you don't keep iterating through the loop
}
}
}
}

关于Java如何将数组中的变量分配给另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60836546/

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