2014-12-24 135 views
0

我需要找到一个二维数组中的字符串,我不知道如何。该代码应该是这样的:如何在字符串的二维数组中找到特定的字符串?

... 
Random x = new.Random(); 
Random y = new.Random(); 
string[,] array = new string[10,10]; 
{ 
    for (int i = 0; i < 10; i++) 
    { 
     for (int j = 0; j < 10; j++) 
     { 
      array[i, j] = ""; 
     } 
    } 
} 
array[x.Next(0,10),y.Next(0,10)] = "*"; 
... 

*符号总是在不同的点,我想知道我怎么找到它。由于

+0

形式列表您共享的代码随机将“*”放在二维数组中,对吗?然后你需要找到那个“”的位置,对吧? – hmartinezd

+0

如果你有代码,为什么不先用'x.Next(0,10)'和'y.Next(0,10)'设置局部变量,然后使用这些变量来更新数组? – serdar

回答

1

您可以通过就像你初始化它,除了代替分配数组的索引值数组迭代找到它,你会检查它的平等:

int i = 0; 
int j = 0; 
bool found = false; 

for (i = 0; i < 10 && !found; i++) 
{ 
    for (j = 0; j < 10; j++) 
    { 
     if (array[i, j] == "*") 
     { 
      found = true; 
      break; 
     } 
    } 
} 

if (found) 
    Console.WriteLine("The * is at array[{0},{1}].", i - 1, j); 
else 
    Console.WriteLine("There is no *, you cheater."); 
+0

@hmartinezd事实上,我认为你应该看看:http://stackoverflow.com/questions/1659097/why-would-you-use-string-equals-over – itsme86

0

作为alterntive与LINQ搜索查询:

Random xRnd = new Random(DateTime.Now.Millisecond); 
Random yRnd = new Random(DateTime.Now.Millisecond); 

string[,] array = new string[10, 10]; 

array[xRnd.Next(0, 10), yRnd.Next(0, 10)] = "*"; 

var result = 
    Enumerable.Range(0, array.GetUpperBound(0)) 
    .Select(x => Enumerable.Range(0, array.GetUpperBound(1)) 
     .Where(y => array[x, y] != null) 
     .Select(y => new { X = x, Y = y })) 
    .Where(i => i.Any()) 
    .SelectMany(i => i) 
    .ToList(); 

result是比赛中的X,Y

相关问题