求助:输入数组中存在的名字时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
相关产品推荐
相关产品推荐

