[英]C# Inequality Operator: Checking against multiple values
我想检查用户输入是否是特定数字(1 或 9),如果不是,我希望他重新输入他的输入。 我正在尝试以下代码:
int playerchoice = 0;
while ((Int32.TryParse(Console.ReadLine(), out playerchoice) == false) || (playerchoice != (1 | 9)))
{
Console.WriteLine("Input could not be accepted, please enter a valid number");
};
问题似乎出在检查的第二部分:无论我使用 (playerchoice,= (1 | 9)) 还是 (playerchoice,= (1 & 9))。 它总是检查 1 或 9,而不是两者。
我能做些什么来解决这个问题? 我使用了错误的运算符吗?
编辑:我知道我可以单独检查每个值,但是当我计划最终有很多选项时,这似乎很不切实际。
最简单的解决方法是单独检查每个值,但是如果要检查的数字很多,另一种解决方法是使用HashSet
。 这是一个简单的例子:
class Program {
private static readonly HashSet<int> nums = new HashSet<int> { 1, 9, ... };
public static void Main(string[] args) {
int i = int.Parse(Console.ReadLine());
if (nums.Contains(i)) {
// do something
} else {
// do something else
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.