2017-12-13 5 views
0

私のシステムでは、C#ではユーザーが最大30個の整数を追加できるリストボックスがあります。私はまた5つの異なるラベルを追加しました:これらは最大許容値です:,最初の値:、中間値:,最後の値:,およびカウント:,カウントは、リストボックスにある整数の合計量です。私は値が各ラベルに表示されるようにこれらのラベルをコーディングする方法を見たいと思っています。誰も助けることができますか?これは、 'Add integer to list box'のコードです。リストボックス内の整数の総数を数えてラベルに表示する方法C#

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; 
    } 
} 

答えて

2

あなたは正しいソート、bubbleSort方法の必要はありませんを取得するためにList.Sortを使用することができます。あなたは、まず最後と中間値を取得するEnumerable.FirstLastと簡単な数学を使用することができます。

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()); 

私は条件を反転し、早期に返すことで「スパゲティプログラム」を防ぐ方法もあなたを示してきました。

関連する問題