C# 带有或的if语句
谁能告诉我我做错了什么? 我有4个值(3个随机值和1个唯一值),我要做的是确保没有重复值,所以我认为if语句应该起作用,有人能告诉我这是不是一种方法吗? 我已经得到了副本,但不确定if语句是否做不到它的工作或其他什么C# 带有或的if语句,c#,if-statement,xna,C#,If Statement,Xna,谁能告诉我我做错了什么? 我有4个值(3个随机值和1个唯一值),我要做的是确保没有重复值,所以我认为if语句应该起作用,有人能告诉我这是不是一种方法吗? 我已经得到了副本,但不确定if语句是否做不到它的工作或其他什么 if (value1 == answer | value1 == value2 | value1 == value3) { value1 = ans.Next(1, 40); } if (value2 == answer | value2 == value1 | valu
if (value1 == answer | value1 == value2 | value1 == value3)
{
value1 = ans.Next(1, 40);
}
if (value2 == answer | value2 == value1 | value2 == value3)
{
value2 = ans.Next(1, 40);
}
if (value3 == answer | value3 == value2 | value3 == value1)
{
value3 = ans.Next(1, 40);
}
单个
|
是二进制的,或者,您需要双|
作为逻辑OR
if (value1 == answer || value1 == value2 || value1 == value3)
我可能会以稍微不同的方式来处理这个问题。我不需要生成三个随机数,而是使用1到40之间的整数数组,并使用。那就选前三名吧
//assuming 'answer' is your constant value
var allValues = Enumerable.Range(1, 40).Where(x => x != answer).ToArray();
Shuffle(allValues);
value1 = allValues[0];
value2 = allValues[1];
value3 = allValues[2];
来自上面链接的站点的洗牌算法
private static Random _random = new Random();
public static void Shuffle<T>(T[] array)
{
var random = _random;
for (int i = array.Length; i > 1; i--)
{
// Pick random element to swap.
int j = random.Next(i); // 0 <= j <= i-1
// Swap.
T tmp = array[j];
array[j] = array[i - 1];
array[i - 1] = tmp;
}
}
private static Random\u Random=new Random();
公共静态无效洗牌(T[]数组)
{
var random=_random;
对于(int i=array.Length;i>1;i--)
{
//选择要交换的随机元素。
int j=random.Next(i);//0尝试使用while循环:
while (value1 == answer || value1 == value2 || value1 == value3)
{
value1 = ans.Next(1,40);
}
那么,有什么可以阻止你再次从ans获得相同的东西呢?下一步?代码正在更新,所以我认为它会再次更改它?我不知道你的意思。但我怀疑你想在循环时使用。我只能重复我(现在已删除的答案)中告诉我的内容这是不正确的。布尔和整数上的|运算符完全合法。完全合法与“做程序员想做的事”不同。空的main也完全合法。例如,如果二进制运算符短路,我会感到惊讶。if(true | false | false)
?我认为,在这种情况下,没有什么区别。如果你想让它们二进制或“ed”在一起,并且结果由If计算,那么当然。如果你想让它们一个接一个地计算,当你找到第一个真值时停止,因为这会使结果为真,那么不,它是不一样的。如果你只看结果,当然,它是一样的。它将如果你只是把if全部省略,那么d是相同的。相同的结果。不同的程序。这不是我的意思,条件value1==answer
是一个布尔值,对于下一个条件,逻辑OR与布尔值的比较产生了与条件OR相同的结果。因此,从问题的角度来看,你的答案无法产生与当前情况不同的结果。