2014-12-23 4 views
0

저는 C 샤프하고 조금 어리 석음이 새롭습니다. 제 프로젝트에 문제가 있습니다. 저를 도울 수 있기를 바랍니다!텍스트 상자에서 2D 배열로 데이터 전송

0 1 0 1 0 1 0 1 
0 0 0 0 0 0 0 0 
0 0 0 1 0 0 0 0 
1 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 

이 지금은 정수 유형의 데이터를 저장할 것이다 존재하는 2 차원 매트릭스에이 텍스트 상자에서 데이터를 전송하려면 : 가정하자

I는 다음 (행의 X n 열의 N)으로 TextBox1에 있습니다.

나는이 시도하지만 작품이 아닌 것 같습니다 :

private void GETNUMERICDATA() 
{ 
    string txt = textbox1.text; 
    txt = txt.Replace(" ", string.Empty); 
    for (int k = 0; k < 32; k++) 
    { 
     for (int l = 0; l < 32; l++) 
     { 
      for (int i = 0; i < txt.Length; i++) 
      { 
       char chr = txt[i]; 
       if (chr == '0') 
       { 
        Matrix[k, l] = (int)char.GetNumericValue('0'); 
       } 
       else 
       { 
        if (chr == '1') 
        Matrix[k, l] = (int)char.GetNumericValue('1');        
       } 
      }  
     } 
    }   
} 

누구는 그것을 어떻게 나를 도울 수 있습니까? 귀하의 모든 지원은 높이 평가 될 것입니다.

+0

0과 1 사이에 공백이 있습니까? – Ahmad

+0

어떻게 작동하지 않습니까? 괜찮아 보인다! – Ahmad

+0

'(int) char.GetNumericValue ('0')'는 '0'으로 쓰여져 이해하기가 훨씬 쉽습니다. –

답변

1

문제는 입력에서 세 번째 루프입니다. 매번 전체 입력을 반복합니다. 결과적으로 모든 루프가 완료된 후 배열에는 입력의 마지막 값만 포함됩니다. 이것을 시도하십시오 :

private void GETNUMERICDATA() 
{ 
    int currentPosition = 0; 
    string txt = textbox1.text; 
    txt = txt.Replace(" ", string.Empty); 

    for (int k = 0; k < 32 && currentPosition < txt.Length; k++) 
    { 
     for (int l = 0; l < 32 && currentPosition < txt.Length; l++) 
     { 
      char chr = txt[currentPosition]; 

      if (chr == '0') 
      { 
       Matrix[k, l] = (int)char.GetNumericValue('0'); 
      } 
      else if (chr == '1') 
      { 
       Matrix[k, l] = (int)char.GetNumericValue('1'); 
      } 

      currentPosition++; 
     } 
    } 
} 
+0

안녕하세요 Thomas Lielacher, 빠른 답변 주셔서 감사합니다.이 코드를 시도했지만 작동하지 않았습니다. – Zippy

+0

결과 행렬은 다음과 같습니다 (n 행 (0) x n 열 (0)). – Zippy

0

해결되었습니다. 그냥 txt에서 수정;

private void GETNUMERICDATA() 
{ 
    int currentPosition = 0; 
    string txt = textbox1.text; 
    txt = txt.Replace(" ", string.Empty); 
    txt = txt.Replace(Environment.Newline, string.Empty); 
    //Just add this code line 

    for (int k = 0; k < 32 && currentPosition < txt.Length; k++) 
    { 
     for (int l = 0; l < 32 && currentPosition < txt.Length; l++) 
     { 
      char chr = txt[currentPosition]; 

      if (chr == '0') 
      { 
       Matrix[k, l] = 0; 
      } 
      else if (chr == '1') 
      { 
       Matrix[k, l] = 1; 
      } 

      currentPosition++; 
     } 
    } 
} 

귀하의 도움에 감사드립니다! 좋은 하루 되세요.