繁体   English   中英

C# 不等式运算符:检查多个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM