通过ASCII值C#计算最大和最小的字母

时间:2016-09-27 01:37:13

标签: c# loops foreach windows-applications

嘿,我在上学时遇到了一些麻烦。问题是我有一个foreach循环搜索用户输入。它应该显示最大字符或最小字符,但是当我插入Hello时!它显示的最大值是!该示例声明它应该是小写字母o。 这是我的代码。请原谅我,如果这看起来很乱,第一次在这个网站上,这需要快速完成。

这一切都在视觉工作室的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 个答案:

答案 0 :(得分: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
    }

答案 1 :(得分: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();
  }
}

答案 2 :(得分:0)

我认为你错过了 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
}