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

求助:输入数组中存在的名字时MessageBox仍弹出的问题

问题分析与修复方案

嗨,我一眼就看出问题出在哪啦!你当前的循环逻辑有个致命的小错误:只要第一个学生的名字和输入不匹配,程序就会立刻弹出"Name does not exist"的提示,然后直接终止循环——完全没机会检查数组后面的其他学生。比如你输入"Ben",第一个学生是"Dan",不匹配就直接进else分支弹框了,根本不会去看第二个学生就是你要找的"Ben"。

修复思路

我们应该先把整个数组遍历完,确认有没有匹配的名字:

  • 遍历过程中如果找到匹配项,就填充文本框内容,并标记“已找到”
  • 遍历结束后,如果全程都没找到匹配项,再弹出提示框

修改后的代码

private void Btn1_Click(object sender, EventArgs e) {
    string name = txtbox1.Text;
    clsStudent [] students = new clsStudent[5];
    students[0] = new clsStudent("Dan","IT","class1",3.9);
    students[1] = new clsStudent("Ben", "IT","class2", 3.8);
    students[2] = new clsStudent("Kardi", "IT","class3",2.4);
    students[3] = new clsStudent("Shaggy", "IT", "class4", 3.2);
    students[4] = new clsStudent("Bernie", " IT", "class5", 2.7); // 注意这里COURSE字段前面有个空格,可能会导致后续显示问题哦

    bool found = false; // 标记是否找到匹配的学生
    for (int i = 0; i < students.Length; i++) {
        if(name == students[i].NAME) {
            txtbox2.Text = students[i].COURSE;
            txtbox3.Text = students[i].STUDENTCLASS;
            txtbox4.Text = students[i].Gpa.ToString();
            found = true;
            break; // 找到后就不用继续遍历了
        }
    }

    // 遍历完所有学生都没找到,才弹出提示
    if (!found) {
        MessageBox.Show("Name does not exist");
    }
}

额外提示

顺便提一句,你数组里最后一个学生Bernie的COURSE参数是" IT"(前面多了个空格),如果后续需要精确匹配课程名称的话,可能要把这个空格去掉哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:10:50