2016-09-27 3 views
-1

학교 과제에 약간의 문제가 있습니다. 문제는 사용자 입력을 통해 foreach 루프를 검색한다는 것입니다. 가장 큰 문자 또는 가장 작은 문자를 표시해야하지만 Hello를 삽입 할 때! 가장 큰 가치를 표시합니다! 이 예제는 소문자 o라고 가정합니다. 내 코드는 다음과 같습니다. 이 웹 사이트에서 처음으로 지저분 해 보일 경우 용서하십시오.이 작업을 빨리 완료해야합니다.ASCII 값으로 대문자와 소문자를 계산 C#

이것은 모두 Visual Studio의 Windows 포럼 앱에서 수행됩니다.

 if (UI_TB_UserInput.Text.Length > 0) 
     { 

      foreach (char c in UI_TB_UserInput.Text) 
      { 

       char min = UI_TB_UserInput.Text[0];//? 
       char max = UI_TB_UserInput.Text[0];//? 

       if (c < min) 
       { 

        min = c; 

       } 
       if (c > max) 
       { 

        max = c; 

       } 

       if (UI_RB_Min.Checked) 
       { 
        UI_LB_MinMaxOutput.Text = min.ToString(); 
       } 
       else 
       { 
        UI_LB_MinMaxOutput.Text = max.ToString(); 
       } 
      } 

     } 
     else 
     { 
      UI_LB_MinMaxOutput.Text = "";//If not > 0 then display blank 
     } 
+3

도움이 필요하면 문제를 상당 부분 좁히고 문제를 확실하게 재현 할 수있는 좋은 [mcve]를 제공해야합니다. 여기에 적힌 코드를 토대로, 나에게 모든 것은 틀린 것은'min'과'max' 변수의 선언과 초기화가'foreach' 루프 외부에 (즉, 바로 앞에) 있다는 것입니다. 그러나 완전하고 최소한의 예가 없으면 틀린 다른 것이 있는지 확실하게 말할 수는 없습니다. –

+0

루프 내에서의 선언은 실제로 나쁜 습관이지만,이 코드가 올바르게 작동하지 않는 이유는 min과 max의 초기 할당이 루프 내에서 이루어지기 때문입니다. –

+0

ASCII 코드를 가져 오는 것이 질문의 중요한 부분이며, 놓친 것처럼 보입니다. :-) – Arti

답변

0
char min = UI_TB_UserInput.Text[0];char max = UI_TB_UserInput.Text[0]; 전에 에 루프 시작으로 이동

. 당신이 가지고있는 방식으로, min과 max는 루프의 반복마다 첫 번째 문자로 설정됩니다. 그런 다음 비교 대상이 아닌 현재보고있는 문자와 UI_TB_UserInput.Text[0]을 비교합니다.

if (UI_TB_UserInput.Text.Length > 0) 
    { 
    char min = UI_TB_UserInput.Text[0]; 
    char max = UI_TB_UserInput.Text[0]; 

     foreach (char c in UI_TB_UserInput.Text) 
     { 
      if (c < min) 
      { 

       min = c; 

      } 
      if (c > max) 
      { 

       max = c; 

      } 

      if (UI_RB_Min.Checked) 
      { 
       UI_LB_MinMaxOutput.Text = min.ToString(); 
      } 
      else 
      { 
       UI_LB_MinMaxOutput.Text = max.ToString(); 
      } 
     } 
    } 
    else 
    { 
     UI_LB_MinMaxOutput.Text = "";//If not > 0 then display blank 
    } 
0

왜 루프 문자열을 통해 ... ... 가능한 배열의 특징 ... 형태에 button_click와

사용

private void button1_Click(object sender, EventArgs e) 
{ 
    if (UI_TB_UserInput.Text.Length > 0) 
    { 
    string inputString = UI_TB_UserInput.Text; 
    char[] charArray = inputString.ToCharArray(); 
    Array.Sort(charArray); // array sorted from low to high 
    Array.Reverse(charArray); // reverse order to get high to low 
    UI_LB_MinMaxOutput.Text = charArray[0].ToString(); 
    } 
} 
0

I : 당신이 원하는 질문 ASCII 값의 중요한 부분을 빠뜨린 것 같아요. 먼저 문자열의 ASCII 값을 가져온 다음 값을 확인해야합니다. 다음은 나를 위해 작동하는 코드입니다.

if (UI_TB_UserInput.Text.Length > 0) 
{ 
    byte[] asciiBytes = Encoding.ASCII.GetBytes(UI_TB_UserInput.Text); 
    byte minByte = asciiBytes[0]; 
    byte maxByte = asciiBytes[0]; 
    foreach (byte i in asciiBytes) 
    { 
     if (i < minByte) 
     { 
      minByte = i; 
     } 
     if (i > maxByte) 
     { 
      maxByte = i; 
     } 

    } 
    if (UI_RB_Min.Checked) 
    { 
     UI_LB_MinMaxOutput.Text = ((char)minByte).ToString(); 
    } 
    else 
    { 
     UI_LB_MinMaxOutput.Text = ((char)maxByte).ToString(); 
    } 
} 
else 
{ 
    UI_LB_MinMaxOutput.Text = "";//If not > 0 then display blank 
} 
관련 문제