You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing JFrame登录成功后仍提示账号密码或用户类型错误如何解决

问题根源

  • 所有if分支均为独立判断逻辑,未做互斥处理:普通用户/员工登录成功的分支执行完成后,代码仍会继续向下执行后续的空值判断逻辑,只要当前输入的账号密码不为空,就会命中最后一个else分支弹出错误提示。
  • 逻辑判断符使用错误:代码中使用的单&是按位与运算符,应该使用&&短路逻辑与运算符,单&会强制执行两侧所有判断语句,还可能引发空指针异常。
  • 登录成功分支和后续的输入校验、错误提示分支没有做互斥隔离,登录成功后没有终止后续的错误判断逻辑。

修复方案

  1. 把普通用户、员工的登录判断和后续的空值校验、错误提示整合成一套互斥的if-else if-else分支,避免多个分支同时触发。
  2. 将所有逻辑判断场景的单&替换为&&。
  3. 确保只有登录失败的场景才会进入输入校验和错误提示分支。

修正后可直接运行的代码如下:

if (userInfo != null ) {    
    JOptionPane.showMessageDialog(null, "LoginSuccessful");
    dispose();                  
    new ChooseRoomFrame(userInfo,UserRoomDetails,UserDao).setVisible(true);
} else if(Staff != null && rdbtnStaff.isSelected()){
    JOptionPane.showMessageDialog(null, "Login Successful");
    dispose();
    new StaffFrame(userInfo, UserRoomDetails,UserDao).setVisible(true);                 
} else {
    if(user.isEmpty() && pwd.isEmpty()){
        JOptionPane.showMessageDialog(null,"Please insert Username and Password");
    } else if(user.isEmpty()){
        JOptionPane.showMessageDialog(null,"Please insert Username");
    } else if (pwd.isEmpty()){
        JOptionPane.showMessageDialog(null,"Please insert Password");
    } else {
        JOptionPane.showMessageDialog(null, "Incorrect account or password or user type");
    }
}

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:45:03