红色部分出现问题,就是总是判断为else里面去
密码输入的一样我把我输入的东西打印在控制台上,密码都是654321,然而总是跑到else里面去
//修改密码中的确认密码按钮事件源
    public void qr_actionPerformed(ActionEvent e) 
   {
        DB db=new DB();
        String name=sryonghuming.getText();
        char []pwd =srpwd.getPassword();
        char []xpwd=srxpwd.getPassword();
        char []xqpwd=qrxpwd.getPassword();
        try
        {
            if(sryonghuming.getText().length()==0||srpwd.getText().length()==0||srxpwd.getText().length()==0||qrxpwd.getText().length()==0) //判断输入是否为空
            {
                JOptionPane.showMessageDialog(this,"修改失败!输入为空!","验证用户信息",JOptionPane.INFORMATION_MESSAGE);
            }
            else
            {
                if(xqpwd.equals(xpwd))
                {
                    String sql="update Operator set name='"+name+"'where pwd='"+xpwd+"'";
                    db.excuteSql(sql);
                    JOptionPane.showMessageDialog(this,"修改成功","提示信息",JOptionPane.INFORMATION_MESSAGE);
                }
                else
                {
                    JOptionPane.showMessageDialog(this,"两次输入的密码不相同\n\t请重新输入","验证用户信息",JOptionPane.INFORMATION_MESSAGE);
                }
            }
        }

解决方案 »

  1.   

    你使用的是 char 的数组对象,其 equals 方法还是在比较两个引用的地址,所以结果总是 false 。你将两个密码用 String 包装一下,再用 equals 作比较应该就可以了;String xpwd = new String(srxpwd.getPassword());
    String xqpwd = new String(qrxpwd.getPassword());
      

  2.   

    另外,JPasswordField 的 getText() 方法已经被注销掉了,最好不要再使用了。
      

  3.   

    干吗放到char里面?字符串的话直接赋给String变量不就可以了?
    或者
    if(xqpwd.toString().equals(xpwd.toString()))