在我的C#系统中,我有一个列表框,用户最多可以添加30个整数。我还添加了5个不同的标签,它们是:允许的最大条目:,第一个值:,中间值:,最后一个值:和Count:,count是列表框中整数的总量。我希望看到如何编码这些标签,以便在每个标签中显示值。有人可以帮忙吗?这是我为“添加整数到列表框”所提供的代码。
int acceptedNum = 0;
if (txtInsert.Text != "")
{
if (lstIntegers.Items.Contains(txtInsert.Text))
{
if (!(int.TryParse(txtInsert.Text, out acceptedNum) && acceptedNum < 0 || acceptedNum >= 100))
{
lstIntegers.Items.Add(txtInsert.Text);
txtInsert.Clear();
txtInsert.Focus();
bubbleSort();
}
else
{
MessageBox.Show("Please input value between 1-100", "error", MessageBoxButtons.OK);
txtInsert.Text = "";
}
}
else
{
MessageBox.Show("Number already exists in list", "error", MessageBoxButtons.OK);
}
}
else
{
MessageBox.Show("Please input value between 1-100", "error", MessageBoxButtons.OK);
}
if (lstIntegers.Items.Count == 30)
{
MessageBox.Show("Maximum number of entries exceeded", "error", MessageBoxButtons.OK);
//button enabled was false however couldn't then add another
btnInsert.Enabled = true;
}
}
答案 0 :(得分:2)
您可以使用List.Sort
来获得正确的排序,不需要使用bubbleSort
方法。您可以使用Enumerable.First
,Last
和简单数学来获取第一个,最后一个和中间值:
int acceptedNum;
bool validNumber = int.TryParse(txtInsert.Text, out acceptedNum);
if (!validNumber || acceptedNum < 1 || acceptedNum > 100)
{
MessageBox.Show("Please input value between 1-100", "error", MessageBoxButtons.OK);
return;
}
List<int> existingNumbers = lstIntegers.Items.Cast<Object>().Select(System.Convert.ToInt32).ToList();
if (existingNumbers.Contains(acceptedNum))
{
MessageBox.Show("Number already exists in list", "error", MessageBoxButtons.OK);
return;
}
existingNumbers.Add(acceptedNum);
existingNumbers.Sort(); // Quicksort with 30 items
int firstValue = existingNumbers.First();
int lastValue = existingNumbers.Last();
int middleValue = existingNumbers[existingNumbers.Count / 2];
int count = lstIntegers.Items.Count;
int maxNumbers = 30;
if (count == maxNumbers)
{
MessageBox.Show("Maximum number of entries exceeded", "error", MessageBoxButtons.OK);
btnInsert.Enabled = false;
}
lstIntegers.Items.Clear();
lstIntegers.Items.AddRange(existingNumbers.Cast<object>().ToArray());
我已经向您展示了如何预防&#34; spaghetticode&#34;通过颠倒条件并尽早返回。