如何从对应数组中匹配输入姓名获取对应成绩?
如何根据姓名匹配对应成绩
嗨,没错,遍历数组确实是你当前场景下最直接的解决方案~毕竟你用的是两个平行数组(姓名和成绩一一对应),必须找到输入姓名在数组里的索引位置,才能拿到对应的成绩。下面给你详细讲实现思路和代码示例:
核心逻辑步骤
- 遍历姓名数组,逐个对比用户输入的
getName和数组中的每个元素 - 找到匹配项时,用当前的索引去成绩数组
g中取出对应的值返回 - 别忘了处理“姓名不存在”的情况,避免程序出错
代码示例(以Java为例,匹配你提到的变量类型)
public class ScoreLookup { public static int findScore(String[] nameArray, int[] scoreArray, String getName) { // 先做个严谨性检查,防止数组为空或长度不匹配 if (nameArray == null || scoreArray == null || nameArray.length != scoreArray.length) { throw new IllegalArgumentException("姓名数组和成绩数组必须非空且长度一致"); } // 遍历姓名数组找匹配项 for (int i = 0; i < nameArray.length; i++) { // 重点!字符串比较要用equals(),不能用==(==比的是对象引用,不是内容) if (getName.equals(nameArray[i])) { return scoreArray[i]; } } // 如果没找到对应姓名,返回一个标识值(比如-1,你可以根据需求调整) return -1; } // 测试用例 public static void main(String[] args) { // 替换成你的20个姓名和对应成绩 String[] studentNames = {"Alice", "Bob", "Charlie", ...}; int[] studentScores = {88, 95, 76, ...}; String inputName = "Bob"; int resultScore = findScore(studentNames, studentScores, inputName); if (resultScore != -1) { System.out.println(inputName + "的成绩是:" + resultScore); } else { System.out.println("未找到该学生的成绩记录"); } } }
额外优化建议
如果后续你的数据量变大(比如超过20个),遍历数组的效率会逐渐降低。这时候可以改用HashMap来存储姓名和成绩的映射关系,查找时间会从O(n)降到O(1):
// 先把平行数组转成HashMap HashMap<String, Integer> nameToScore = new HashMap<>(); for (int i = 0; i < studentNames.length; i++) { nameToScore.put(studentNames[i], studentScores[i]); } // 查找成绩只需一行代码 int score = nameToScore.getOrDefault(getName, -1);
另外,如果姓名存在大小写差异(比如输入"bob"但数组里是"Bob"),可以用equalsIgnoreCase()来忽略大小写比较,替换代码里的equals()即可。
内容的提问来源于stack exchange,提问作者user8595015
相关产品推荐
相关产品推荐

