java - 登录表单 IF-ELSE 无法正常工作

标签 java swing authentication text-files

注意文本文件中的数据如下:

  • 客户-1-客户
  • coach-1-运动教练
  • coach2-1234-运动教练
  • customer2-1234-客户

问题 1. 程序可以读取数据1&2。但是,一旦进入特定菜单,它还会执行 else 语句,该语句将显示弹出窗口。 2. 数据3&4无法读取,尽管用户名和密码输入正确,但它直接进入else语句。

private void btn_ConfirmActionPerformed(java.awt.event.ActionEvent evt) {                                            

    Admin = txt_Username.getText();
    Admin_Pass = txt_Password.getText();

    try
    {
        BufferedReader br = new BufferedReader(new FileReader(("USER_Account.txt")));

        String s;
        String TOU;
        String UIusername; //txt_Username.getText();
        String UIpassword; //txt_Password.getText();
    while((s = br.readLine()) != null)
    {   
       String tmp [] = s.split("-");

       UIusername = tmp[0];
       UIpassword = tmp[1];
       TOU = tmp[2];

        if (txt_Username.getText().equals(UIusername) && txt_Password.getText().equals(UIpassword) && TOU.equals("Sport Coach"))
        { JOptionPane.showMessageDialog(null,"Logged in as Coach!","",JOptionPane.INFORMATION_MESSAGE);
            SportCoach_Menu spMenu = new SportCoach_Menu();
            this.hide();
            spMenu.show();
        }
        else if (txt_Username.getText().equals(UIusername) && txt_Password.getText().equals(UIpassword) && TOU.equals("Customer"))
        { JOptionPane.showMessageDialog(null,"Logged in as Customer!","",JOptionPane.INFORMATION_MESSAGE);
            Customer_Menu cMenu = new Customer_Menu();
            this.hide();
            cMenu.show();
        }
        else if (Admin.equals("admin") && Admin_Pass.equals("1234"))
        {
            JOptionPane.showMessageDialog(null,"Logged in as Admin!","",JOptionPane.INFORMATION_MESSAGE);
            Staff_Menu sMenu = new Staff_Menu();
            this.hide();
            sMenu.show();
        }
        else
        {
            JOptionPane.showMessageDialog(null,"Invalid Username / Password, please retry!","",JOptionPane.ERROR_MESSAGE);
            txt_Username.setText(null);
            txt_Password.setText(null);
        }        
    }
    br.close();  
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
}

非常感谢您的帮助!!

最佳答案

这有效。我做了一些修改。不懂就问。

我没有读取文本字段,而是对值进行硬编码。您应该将其改回来。

import javax.swing.*;
import java.io.BufferedReader;
import java.io.FileReader;

public class Main {

    public static void main(String[] args) {

        String Admin = "coach2";
        String Admin_Pass = "1234";

        try {
            BufferedReader br = new BufferedReader(new FileReader(("USER_Account.txt")));

            String s;
            String TOU;
            String UIusername; //txt_Username.getText();
            String UIpassword; //txt_Password.getText();
            boolean loggedIn = false;
            while ((s = br.readLine()) != null && !loggedIn) {
                String tmp[] = s.split("-");

                UIusername = tmp[0];
                UIpassword = tmp[1];
                TOU = tmp[2];

                if (Admin.equals(UIusername) && Admin_Pass.equals(UIpassword) && TOU.equals("Sport Coach")) {
                    JOptionPane.showMessageDialog(null, "Logged in as Coach!", "", JOptionPane.INFORMATION_MESSAGE);
                    loggedIn = true;
                } else if (Admin.equals(UIusername) && Admin_Pass.equals(UIpassword) && TOU.equals("Customer")) {
                    JOptionPane.showMessageDialog(null, "Logged in as Customer!", "", JOptionPane.INFORMATION_MESSAGE);
                    loggedIn = true;
                } else if (Admin.equals("admin") && Admin_Pass.equals("1234")) {
                    JOptionPane.showMessageDialog(null, "Logged in as Admin!", "", JOptionPane.INFORMATION_MESSAGE);
                    loggedIn = true;
                }
            }
            if (!loggedIn)JOptionPane.showMessageDialog(null, "Invalid Username / Password, please retry!", "", JOptionPane.ERROR_MESSAGE);
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关于java - 登录表单 IF-ELSE 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008102/

相关文章:

java -\\s+ 和\s+ 有什么区别

java - 在构造函数中设置 boolean 值,在方法中更改它,在另一个方法中返回它

Java - 打开 JScrollPane,并将 JScrollBar 设置为右侧

ios - Swift - 从完成 block 中解散 View Controller

azure - 使用azure功能在移动应用程序中进行身份验证

java - 未考虑登录/角色后的 JDBC Tomcat 身份验证 403

java - 类的每个方法的 JUnitParams

java - classloader:如何加载不同版本的jar

java - 是否可以使用 Timer 为 JButton 创建淡入淡出效果?

java - Java Swing 中的 MVC 模式?