即使不满足循环条件,程序也会退出



我是一个编程新手,有一个小问题:我的程序一直退出,即使我的while循环应该继续。

这应该是一个二维的猜谜游戏,大约完成了一半,但每当我测试它时,它就退出了,即使我没有猜对正确的数字。

我不明白,这是呼救。

static void Main(string[] args)
{
Random random = new Random();
int y = 0;
int x = 0;
int ranX = random.Next(1, 4);
int ranY = random.Next(1, 4);
while (x != ranX && y != ranY)
{
int[,] shootingRange = new int[,]
{
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
};
Console.Clear();
Console.WriteLine();
Console.WriteLine("    1   2   3   4");
for (int a = 0; a < shootingRange.GetLength(0); a++)
{
Console.WriteLine("  -----------------");
Console.Write(a + 1 + " ");
Console.Write("| ");
for (int b = 0; b < shootingRange.GetLength(1); b++)
{
Console.Write(" " + " | ");
}
Console.WriteLine(" ");
}
Console.WriteLine("  -----------------");
Console.WriteLine();
Console.WriteLine("Indicate new shot");
Console.Write("X cordinate: ");
x = Convert.ToInt32(Console.ReadLine());
if (x > 4 || x < 1)
{
Console.WriteLine("Out of range");
Environment.Exit(0);
}
Console.Write("Y cordinate: ");
y = Convert.ToInt32(Console.ReadLine());
if (y > 4 || y < 1)
{
Console.WriteLine("Out of range");
Environment.Exit(0);
}
}

多测试几次,观察它并不总是做你所描述的。但它确实经常。为什么?

因为只有当两个猜测都错误时循环才会继续:

while (x != ranX && y != ranY)
因此,如果其中一个猜测正确,则循环终止。每个数字有25%的机会,用户有相当大的机会得到其中一个正确。

如果猜错,循环应该继续:

while (x != ranX || y != ranY)

或者,如果它在语义上对你更有意义,循环应该继续,除非两个猜测都是正确的:

while (!(x == ranX && y == ranY))

最新更新