使用 AND 和 OR 运算符评估字符串
Evaluating strings using AND and OR operators
我正在创建一个程序,它只会问候名为 carley 和 zack 的人。
string name1 = "Carley";
string name2 = "Zack";
Console.Write("What's your name? : ");
string name = Console.ReadLine();
if (name == name1)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else if (name == name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
Console.Read();
我在这里,希望通过尝试将输入的评估放在 "if" 的一个语句中来简化代码:
if (name == name1 && name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
Console.Read();
但是它说AND(&&)不能应用于布尔值和字符串。
能否请您解释并帮助我解决这段代码,并弄清楚它可以接受输入,而不管它是否有大写和小写等。
您不能使用 &&
将一个值与另外两个值进行比较。你需要两个比较:
if (name == name1 && name == name2)
此外,&&
与您原始代码中的逻辑不匹配。 ||
相当于您的原始代码:
if (name == name1 || name == name2)
and also figuring out, it can accept input regardless if it has upper and lowercase etc.
您可以使用 name.Equals(..., StringComparison.InvariantCultureIgnoreCase)
进行不区分大小写的比较:
if (name.Equals(name1, StringComparison.InvariantCultureIgnoreCase) ||
name.Equals(name2, StringComparison.InvariantCultureIgnoreCase))
由于这开始变得有点冗长,您可以将可接受的名称放入一个数组中,然后使用 .Any()
。这种方法将允许您指定任意数量的有效名称:
string[] validNames = new[] { "Carley", "Zack" };
if (validNames.Any(n =>
n.Equals(name, StringComparison.InvariantCultureIgnoreCase)))
{
// ...
}
但是考虑到这种方法对于您的水平来说有点高级,您现在可能想坚持使用倒数第二个代码段。
&&
的两边都将被评估(作为布尔值)。 name2 only 不做你想做的事。您应该明确指定比较。
您还想使用 OR: ||
if ((name == name1) || (name == name2))
其实应该是
if (name == name1 || name == name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
使用 ||
时,如果 ||
两边的任何条件为 true
,则整个条件的计算结果为 true
。
使用 &&
时,仅当 &&
任一侧的所有 条件都为 true
.
我正在创建一个程序,它只会问候名为 carley 和 zack 的人。
string name1 = "Carley";
string name2 = "Zack";
Console.Write("What's your name? : ");
string name = Console.ReadLine();
if (name == name1)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else if (name == name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
Console.Read();
我在这里,希望通过尝试将输入的评估放在 "if" 的一个语句中来简化代码:
if (name == name1 && name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
Console.Read();
但是它说AND(&&)不能应用于布尔值和字符串。 能否请您解释并帮助我解决这段代码,并弄清楚它可以接受输入,而不管它是否有大写和小写等。
您不能使用 &&
将一个值与另外两个值进行比较。你需要两个比较:
if (name == name1 && name == name2)
此外,&&
与您原始代码中的逻辑不匹配。 ||
相当于您的原始代码:
if (name == name1 || name == name2)
and also figuring out, it can accept input regardless if it has upper and lowercase etc.
您可以使用 name.Equals(..., StringComparison.InvariantCultureIgnoreCase)
进行不区分大小写的比较:
if (name.Equals(name1, StringComparison.InvariantCultureIgnoreCase) ||
name.Equals(name2, StringComparison.InvariantCultureIgnoreCase))
由于这开始变得有点冗长,您可以将可接受的名称放入一个数组中,然后使用 .Any()
。这种方法将允许您指定任意数量的有效名称:
string[] validNames = new[] { "Carley", "Zack" };
if (validNames.Any(n =>
n.Equals(name, StringComparison.InvariantCultureIgnoreCase)))
{
// ...
}
但是考虑到这种方法对于您的水平来说有点高级,您现在可能想坚持使用倒数第二个代码段。
&&
的两边都将被评估(作为布尔值)。 name2 only 不做你想做的事。您应该明确指定比较。
您还想使用 OR: ||
if ((name == name1) || (name == name2))
其实应该是
if (name == name1 || name == name2)
{
Console.WriteLine("Glad to meet you " + name + "!");
}
else
{
Console.WriteLine("press any key to exit.");
}
使用 ||
时,如果 ||
两边的任何条件为 true
,则整个条件的计算结果为 true
。
使用 &&
时,仅当 &&
任一侧的所有 条件都为 true
.