You need to enable JavaScript to run this app. Java使用JOptionPane获取用户名时If判断恒执行else的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Java使用JOptionPane获取用户名时If判断恒执行else的问题咨询

问题核心

你写的判断逻辑完全失效,根源是对Java中字符串相等判断的规则理解出错:

  • 对于String这类引用数据类型,==运算符的作用是对比两个变量指向的内存地址是否相同,不会对比字符串存储的实际文本内容。
  • 你的代码中,user是JOptionPane.showInputDialog()运行时动态返回的字符串对象,和代码里硬编码的字符串常量"admin"的内存地址并不一致——哪怕你输入的文本完全是admin,user == "admin"的判断结果永远为false,因此程序永远会走到else分支输出test。
  • 额外提示:代码中导入的java.util.Scanner类全程未被使用,属于无效冗余导入。
修正方案

判断两个字符串的文本内容是否相等,必须使用String类提供的equals()方法。为了避免用户点击输入框“取消”按钮导致user为null时触发空指针异常,建议将常量字符串放在方法调用的前端,格式为"目标常量".equals(待判断变量)。

修正后的可运行代码:

import javax.swing.JOptionPane;

public class Shipping {
    public static void main(String args[]) {
        String user = JOptionPane.showInputDialog("Please enter your username ");
        String pass = JOptionPane.showInputDialog("Please enter your password ");
        
        if ("admin".equals(user)) {
            System.out.println("admin");
        } else {
            System.out.println("test");
        }
    }
}

补充说明:如果需要兼容用户输入不同大小写的场景(比如输入Admin、ADMIN也能匹配),可以用equalsIgnoreCase()方法替换equals()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 16:36:03