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

基于数组的登录系统代码异常:正确登录时仍弹出错误提示的问题求助

问题分析与解决方案

嘿,我能立刻看出你代码里的问题啦!问题出在两个独立的for循环上:

当你输入正确的账号密码时,第一个循环会找到匹配项,执行Navigation.PushAsync(new HomePage())跳转到首页,但程序并不会停止运行,它会继续执行第二个循环。第二个循环会遍历所有用户,只要有任意一个用户的账号或密码和你的输入不匹配(显然除了匹配的那个,其他都不匹配),就会触发错误提示框——这就是为什么你跳转的同时还会看到错误提示的原因。

正确的写法思路

我们应该先遍历数组,确认是否存在匹配的用户,用一个变量标记登录状态,遍历结束后再根据这个状态决定是跳转还是弹出错误,而不是用两个独立的循环。

修改后的代码

string[] UserCodes = { "admin", "testcode" };
string[] UserWords = { "123", "testword" };
public void Button_Clicked(object sender, EventArgs e)
{
    // 标记是否找到有效用户
    bool isValidUser = false;
    
    // 一次遍历完成匹配检查
    for (int i = 0; i < UserCodes.Length; i++)
    {
        if (UserCode.Text.Equals(UserCodes[i]) && UserWord.Text.Equals(UserWords[i]))
        {
            isValidUser = true;
            break; // 找到匹配后直接跳出循环,不用继续遍历
        }
    }
    
    // 根据登录状态执行对应操作
    if (isValidUser)
    {
        Navigation.PushAsync(new HomePage());
    }
    else
    {
        DisplayAlert("Something Went Wrong", "Incorrect Password or Username", "Try Again");
    }
}

为什么这样能解决问题?

  • 我们只用一个循环完成所有用户的匹配检查,找到匹配项后立刻标记状态并跳出循环,避免不必要的遍历。
  • 循环结束后再统一判断状态:如果找到有效用户就跳转,否则才弹出错误提示,不会出现两种操作同时触发的情况。

另外,你之前尝试的else if没解决问题,大概率是因为你把判断逻辑放在了两个循环里,而不是整合到同一个循环的判断分支中。现在这种写法就把所有逻辑串起来啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:02:31