将输入的10个数字按升序和降序排列

本文关键字:升序 降序 排列 数字 输入 10个 | 更新日期: 2023-09-27 18:23:58

我想创建一个程序,让我在十个不同的文本框中输入十个不同数字,然后将这些输入的数字按升序或降序排序。windows窗体应用程序设计中有十个文本框,一个名为"排序"的按钮(该按钮将根据您选择的单选按钮对数字进行排序),以及两个名称为"升序"answers"降序"的单选按钮。该设计还有十个标签,用户点击"排序"按钮后,将显示已排序的数字。然而,我发现实际编码本身存在问题,我曾考虑使用嵌套的for循环,但无法处理这些条件。现在,我使用了一个由多个if-else语句支持的数组。

这是我的C#窗体应用程序代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Sort
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
        }
        private void btnSort_Click(object sender, EventArgs e)
        {
            int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;
            num1 = int.Parse(textBox1.Text);
            num2 = int.Parse(textBox2.Text);
            num3 = int.Parse(textBox3.Text);
            num4 = int.Parse(textBox4.Text);
            num5 = int.Parse(textBox5.Text);
            num6 = int.Parse(textBox6.Text);
            num7 = int.Parse(textBox7.Text);
            num8 = int.Parse(textBox8.Text);
            num9 = int.Parse(textBox9.Text);
            num10 = int.Parse(textBox10.Text);

            if (radioButton1.Checked == true)
            {
                int[] numbers = { num1, num2, num3, num4, num5, num6, num7, num8, num9, num10 };
                //String[] display = { l1, l2, l3, l4, l5, l6, l7, l8, l9, l10 };
                Array.Sort(numbers);
                if (num1 <= num2)
                {
                    label12.Text = textBox1.Text;
                }
                else if (num2 <= num3)
                {
                    label13.Text = textBox2.Text;
                }
                else if (num3 <= num4)
                {
                    label14.Text = textBox3.Text;
                }
                else if (num4 <= num5)
                {
                    label15.Text = textBox4.Text;
                }
                else if (num5 <= num6)
                {
                    label16.Text = textBox5.Text;
                }
                else if (num6 <= num7)
                {
                    label21.Text = textBox6.Text;
                }
                else if (num7 <= num8)
                {
                    label20.Text = textBox7.Text;
                }
                else if (num8 <= num9)
                {
                    label19.Text = textBox8.Text;
                }
                else if (num9 <= num10)
                {
                    label18.Text = textBox9.Text;
                }
                else if (num10 <= num1)
                {
                    label17.Text = textBox10.Text;
                }
        }
            }
    }
}

将输入的10个数字按升序和降序排列

试试这个

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        List<TextBox> textBoxes = null;
        List<Label> labels = null;
        public Form1()
        {
            InitializeComponent();
            textBoxes = new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9, textBox10 };
            labels = new List<Label>() { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10 };
            for (int i = 0; i < textBoxes.Count; i++)
            {
                labels[i].Text = textBoxes[i].Text;
            }
            for (int i = 0; i < labels.Count - 1; i++)
            {
                int iInt = int.Parse(labels[i].Text);
                for (int j = i + 1; j < labels.Count; j++)
                {
                    int jInt = int.Parse(labels[j].Text);
                    if (jInt < iInt)
                    {
                        iInt = int.Parse(labels[j].Text);
                        string temp = labels[i].Text;
                        labels[i].Text = labels[j].Text;
                        labels[j].Text = temp;
                    }
                }
            }
        }
    }
}
​

或者这种方法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        List<TextBox> textBoxes = null;
        List<int> numbers = new List<int>();
        List<Label> labels = null;
        public Form1()
        {
            InitializeComponent();
            textBoxes = new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9, textBox10 };
            labels = new List<Label>() { label1, label2, label3, label4, label5, label6, label7, label8, label9, label10 };
            for (int i = 0; i < textBoxes.Count; i++)
            {
                 numbers.Add(int.Parse(textBoxes[i].Text));
            }
            numbers = numbers.OrderBy(x => x).ToList();
            for (int i = 0; i < numbers.Count; i++)
            {
                labels[i].Text = numbers.ToString();
            }
        }
    }
}
​

试试这个代码。在这里,我使用实体框架来使用函数OrderBy和OrderByDescending在需要时对数据进行排序。

private void btnSort_Click(object sender, EventArgs e)
        {
            int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10;
            num1 = int.Parse(textBox1.Text);
            num2 = int.Parse(textBox2.Text);
            num3 = int.Parse(textBox3.Text);
            num4 = int.Parse(textBox4.Text);
            num5 = int.Parse(textBox5.Text);
            num6 = int.Parse(textBox6.Text);
            num7 = int.Parse(textBox7.Text);
            num8 = int.Parse(textBox8.Text);
            num9 = int.Parse(textBox9.Text);
            num10 = int.Parse(textBox10.Text);
            var inputList = new List<int>();
            inputList.Add(num1);
            inputList.Add(num2);
            inputList.Add(num3);
            inputList.Add(num4);
            inputList.Add(num5);
            inputList.Add(num6);
            inputList.Add(num7);
            inputList.Add(num8);
            inputList.Add(num9);
            inputList.Add(num10);
        inputList.OrderBy(order =>order);
        inputList.OrderByDescending(order =>order);
    }

您可能必须使用nuGet Packages导入实体框架,然后尝试此代码。希望我的答复能回答你的问题。