将输入的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;
}
}
}
}
}
试试这个
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导入实体框架,然后尝试此代码。希望我的答复能回答你的问题。