嘿,我在上学时遇到了一些麻烦。问题是我有一个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
}
答案 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
}