2013-05-20 59 views
0

有一个愚蠢的问题,我正在努力。嵌套For循环多维数组搜索

我试着去步骤通过C#多维数组使用嵌套的for循环,但我不能得到的结果,我想和IM想它只是一个愚蠢的问题,我的代码。

string search = txtString.Text; 

     int iLoop; 
     int jloop; 
     int iResult = -1; 

     for (iLoop = 0; iLoop < sounds.GetLength(0) ; iLoop++) 
     { 
      for (jloop = 0; jloop < sounds.GetLength(1) ; jloop++) 
      { 

       string result; 
       result = sounds[iLoop,jloop]; 

       if (result == search) 
       { 
        iResult = iloop; 
       } 
      } 
     } 

      if (iResult == -1) 
      { 
       MessageBox.Show("Result not found"); 
      } 
      else 
      { 
       MessageBox.Show("Result found at position " + iResult);      
      }    
    } 

它搜索阵列,如果答案是发现返回一个肯定的结果,但结果位置始终是“在位置1处发现结果”。

我做错了什么?

+2

也许是因为结果总是在第一行? –

+0

声音是如何声明的?声明了什么? –

+0

btw,在你的代码中'位置'的概念对应于'行'的数量,但不是'行,列'对。这是故意的吗? –

回答

0

你只存储一个维度(iResult)中获得的各种jloop值。它可以始终为1,但第二维(jresult)可能会有所不同。

以及在不同的语言未来的项目只是提醒。尝试不要使用if (result == search)作为字符串。使用EqualCompare methods

+2

在C#中,'=='对于基元和字符串来说非常好。 – pascalhein

+0

是的,在C#中......但是如果他切换到Java或其他语言,它可能会为初学者造成很多麻烦。更好的是在所有语言中使用相同的符号,你可以肯定,你有它:) –

0

有两个指数来一看,jloop和ILOOP,也许你会在二维数组

0

还要检查您所使用的参数名称,有时你怎么称呼它iLoop,别人iloop。 要一致! :)

我想答案总是在第1行,你只需编写i值,打印jjLoop

0

请记住,此代码段会继续搜索就找到了比赛后还是一样。所以实际上你发现的是匹配文本的最后的位置。

另一方面,也许并非只报告匹配的iLoop,您可以报告匹配的iLoopjLoop。或者,您可以报告单个指数iLoop * sounds.GetLength(0) + jLoop