我是一个编程新手,有一个小问题:我的程序一直退出,即使我的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))