You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确检查多个文本框输入的字符串是否按升序排列

应用逻辑修复方案

问题根源

你当前的校验逻辑存在核心错误:在收集完用户从10个文本框输入的内容后,对用户输入的集合做了Sort()升序处理,再和已经排好序的正确列表做匹配。这就导致只要用户输入的内容全都是列表框生成的有效值,不管输入顺序如何,两者排序后结果必然一致,所以永远返回成功提示。

修复方法

只需要删除btn_sort方法中对用户输入集合list2的排序语句即可,修改后的代码如下:

private void btn_sort(object sender, EventArgs e)
{
    List<string> list2 = new List<string>();
    // 获取列表框生成的随机字符串,排序得到标准升序结果
    var correctSortedList = listBox1.Items.Cast<string>().ToList();
    correctSortedList.Sort();

    // 按文本框顺序收集用户输入,不做排序
    list2.Add(textBox1.Text);
    list2.Add(textBox2.Text);
    list2.Add(textBox3.Text);
    list2.Add(textBox4.Text);
    list2.Add(textBox5.Text);
    list2.Add(textBox6.Text);
    list2.Add(textBox7.Text);
    list2.Add(textBox8.Text);
    list2.Add(textBox9.Text);
    list2.Add(textBox10.Text);

    // 直接对比顺序,内容和顺序完全一致才返回成功
    if (correctSortedList.SequenceEqual(list2))
    {
        MessageBox.Show("success");
    }
    else
    {
        MessageBox.Show("fail");
    }
}

可选优化:修复生成列表可能重复的问题

你当前的generate_Click逻辑是连续10次随机从总库取值,可能会出现重复的字符串,不符合排序题的出题要求,可调整为随机打乱总库后取前10个,确保生成的10个值唯一:

private void generate_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    var random = new Random();
    // 打乱总库顺序,取前10个不重复的值
    var randomValues = values.OrderBy(x => random.Next()).Take(10).ToList();
    foreach (var val in randomValues)
    {
        listBox1.Items.Add(val);
    }
}

内容的提问来源于stack exchange,提问作者Bavish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:36:02