是的,这是为了学校工作,但问题只是工作的一小部分,我觉得它几乎可以忽略不计。
简而言之,我使用字符串数组来打印这样的网格
Random rnd = new Random();
for (row = 0; row <= 5; row++)
{
for (column = 0; column <= 5; column++)
{
RandomNumber = rnd.Next(1, 13);
if (RandomNumber == 3)
luckDipBoard[row, column] = "You Win ";
else
luckDipBoard[row, column] = "You Lose ";
}
}
//Display board
for (row = 0; row <= 5; row++)
{
for (column = 0; column <= 5; column++)
{
Console.SetCursorPosition(column * 10, row * 2);
if (luckDipBoard[row, column] == "You Win ")
Console.ForegroundColor = ConsoleColor.Green;
else
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(luckDipBoard[row, column]);
}
}
它打印数组网格并相应地为变量着色。但是,我希望能够做的是让用户能够输入我写过的位置:
Console.WriteLine("Input a row");
rowChoice = int.Parse(Console.ReadLine());
Console.WriteLine("Input a column");
columnChoice = int.Parse(Console.ReadLine());
Console.Clear();
但是,我不知道如何将这些变量转换为数组中的某个位置,并使用这些坐标搜索数组,并找出该位置内的内容。因此,例如,如果随机打印的网格和第2列第1行是#34; You Win&#34;,并且用户输入第2行第1行,则它将简单地将信用添加到变量。
如果有人能指出我正确的方向:
搜索数组并返回位置内的值
int TextIndex = Array.FindIndex(luckDipBoard,m =&gt; m ==&#34; You Win&#34;);
错误:严重性代码描述项目文件行抑制状态错误CS0411方法的类型参数&#39; Array.FindIndex(T [],Predicate)&#39;无法从使用中推断出来。尝试显式指定类型参数。
答案 0 :(得分:3)
Array.FindIndex
不起作用的原因是它只适用于向量(即string[]
) - 但你有一个2D数组(即{{ 1}})。 AFAIK,常规阵列搜索方法都不适用于多维数组,因此您有两个选择:
string[,]
,并通过乘法计算偏移量)如果您对它不太熟悉,第一种方法(循环x / y)可能比第二种方法更容易(这将涉及更改几乎所有代码行)。