2013-05-20 2 views
0

어리석은 질문이 생겼습니다.중첩 된 루프 다차원 배열 검색

중첩 된 for 루프를 사용하여 C# 다차원 배열을 단계별로 시도하지만 원하는 결과를 얻지 못하고 내 코드에 어리석은 문제가 있다고 생각합니다.

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, 코드에서 'position'은'row'의 수에 해당하지만'row, column'의 쌍에는 해당하지 않습니다. 그게 의도적으로 만들어 졌나요? –

답변

0

당신은 하나 개의 차원 (iResult)를 저장하는 다양한 jloop 값을 얻을 것이다가. 항상 1 일 수 있지만 두 번째 차원 (jresult)은 다를 수 있습니다.

다른 언어로 된 향후 프로젝트에 대한 알림입니다. 문자열에 if (result == search)을 사용하지 마십시오. Equal 또는 Compare methods을 사용하십시오.

+2

C#에서'=='는 원시와 문자열에 완벽하게 맞습니다. – pascalhein

+0

예, C#에서 ...하지만 그가 자바 또는 다른 언어로 전환하면 초보자에게 많은 문제가 발생할 수 있습니다. 더 나은 모든 언어로 동일한 표기법을 사용하고 당신은 확신 할 수있다, 당신은 괜찮습니다 :) –

0

찾아 볼 수있는 두 가지 지표가 있습니다 jloop 및 iLoop, 아마 당신이 2D 배열

0

매개 변수의 이름을 확인하십시오. 때로는 iLoop, 다른 사람은 iloop입니다. 일관성을 유지하십시오! :)

나는 대답은 항상 행 1에있는 것 같습니다. i 값을 pring하고 jjLoop도 인쇄하십시오.

0

이 코드 스 니펫은 일치 항목을 찾은 후에도 계속 검색합니다. 실제로 찾으려는 내용은 마지막 일치하는 텍스트의 위치입니다.

제쳐두고 일치하는 iLoop 만보고하는 대신 일치하는 iLoopjLoop을 모두 신고 할 수 있습니다. 또는 결과가 항상 첫 번째 행에 있기 때문에 단일 색인을 iLoop * sounds.GetLength(0) + jLoop