【问题标题】:if statement not checking conditionif 语句不检查条件
【发布时间】:2012-05-19 16:57:13
【问题描述】:

我的 if 下面出于某种原因检查第一个但不检查第二个条件。

第一个是根据数据库检查用户/密码,第二个是硬编码用户和密码。

当我输入硬编码的用户/密码时,它不让我通过,只使用数据库用户/密码。

知道有什么问题吗?

if ((userTxt == userDB && passwdTxt == passwdDB) ||
    (userTxt == "user" && passwdTxt == "test"))
{
    switch (frmMdiMain.loginPageText)
    {
        case "exit":
            mainPage.Hide();
            Application.Exit();
            break;
        case "internal":
            mdiInternalUse internUseForm = new mdiInternalUse();
            internUseForm.Show();
            this.Close();
            break;
        default:
            break;
    }
}

【问题讨论】:

  • 请在您的问题中添加相关语言标签。
  • 您使用的输入法是否有可能给出userTxt 和/或passwdTxt,在末尾包含换行符/回车符?
  • 我也会建议更多的上下文。这些值的类型是什么?中间的开关与您的问题无关,可以去掉。
  • 如果是 Java(看起来),试试 "user".equals(userTxt)&&"test".equals(passwdTxt)(见 How do I compare strings in Java?)。

标签: c# if-statement


【解决方案1】:

如果没有您使用的语言,很难回答,但我认为问题在于 userTxtpasswdTxt 的值与"user""test" 表示的对象不同的对象进行比较

例如在 C/C++ 中 userTxt 是一个指向 char 的指针,它的地址与 `"user" 不同。

在java中,String对象持有userTxt"user"的值也可以不同。

您需要对字符串进行适当的比较(例如,C 中的 strcmp(),C++ 中的 sts::string,java 中的 userTxt.compare("user")

【讨论】:

  • 对不起,它是 C# 并且是一个变量是字符串
  • C# 在这方面与 java 类似。使用userTxt.Equals("user")
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多