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

密码长度验证逻辑异常:首次错误后正确输入仍报错

问题分析与解决

需求说明

实现密码长度验证功能:用户在密码文本框输入密码时,若长度不足10字符则显示错误提示;若长度≥10字符则接受密码并打开GameForm窗体。

问题现象

当前程序可显示错误提示,但首次输入错误后,后续输入符合长度要求的密码仍会弹出错误提示信息。

现有代码

private void button2_Click(object sender, EventArgs e)
{   
    PasswordRestrictions.Hide();

    if (NewPassword.Text.Length <= 10)
    {
        MessageBox.Show("Your password must be atleast 10characters long");
    }

    if (NewPassword.Text.Length >= 10)
    {
        this.Hide();
        var gameForm = new GameForm();
        gameForm.Closed += (s, args) => this.Close();
        gameForm.Show();
    }
    
}

问题根源

代码中两个if语句是独立判断的,存在逻辑冲突:

  • 当密码长度等于10时,<=10和>=10两个条件同时成立,会先弹出错误提示,再执行打开窗体的逻辑,让你误以为验证未通过。
  • 即使后续输入符合要求的10位密码,第一个if的条件依然会触发,导致错误提示重复出现。

修正方案

调整条件判断逻辑,使用互斥分支确保同一时间只执行一个验证结果:

private void button2_Click(object sender, EventArgs e)
{   
    PasswordRestrictions.Hide();

    // 仅当密码长度不足10时显示错误
    if (NewPassword.Text.Length < 10)
    {
        MessageBox.Show("密码长度必须至少10个字符");
    }
    // 长度符合要求时打开GameForm
    else
    {
        this.Hide();
        var gameForm = new GameForm();
        gameForm.Closed += (s, args) => this.Close();
        gameForm.Show();
    }
}

修正要点

  1. 将第一个判断条件从<=10改为<10,精准匹配“长度不足10字符”的需求场景。
  2. 使用else替代第二个独立if,让两个分支互斥,避免同时执行错误提示和窗体打开逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:33:12