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

Java程序功能优化需求:根据用户输入姓氏查询文件对应信息

嘿,我来帮你搞定这个姓氏查询的功能!咱们一步步调整你的Java程序,实现你要的需求:

核心修改思路

主要需要新增三个关键环节:

  • 读取用户输入的目标姓氏
  • 遍历文件内容时匹配姓氏,提取对应档案信息
  • 处理“未找到”的提示逻辑
修改后的代码示例

假设你的文件每行格式是姓名 测验平均分(比如张三 88.0),以下是调整后的完整代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class StudentLookup {
    public static void main(String[] args) {
        // 第一步:获取用户输入的姓氏
        Scanner inputScanner = new Scanner(System.in);
        System.out.print("请输入要查询的姓氏:");
        String targetLastName = inputScanner.nextLine().trim();
        inputScanner.close();

        boolean isFound = false;

        // 第二步:读取文件并匹配姓氏
        try {
            // 替换成你实际的文件路径
            File studentFile = new File("student_records.txt");
            Scanner fileScanner = new Scanner(studentFile);

            while (fileScanner.hasNextLine()) {
                String line = fileScanner.nextLine();
                // 按空格拆分每行内容,适配你的文件分隔符(比如逗号就用",")
                String[] recordParts = line.split("\\s+");
                
                if (recordParts.length >= 2) {
                    String fullName = recordParts[0];
                    // 提取姓氏:单姓取第一个字,复姓的话改成substring(0,2)
                    String lastName = fullName.substring(0, 1);
                    double testAverage = Double.parseDouble(recordParts[1]);

                    // 匹配姓氏,忽略大小写可选
                    if (lastName.equalsIgnoreCase(targetLastName)) {
                        System.out.println("=== 找到匹配档案 ===");
                        System.out.println("姓名:" + fullName);
                        System.out.println("测验平均分:" + testAverage);
                        isFound = true;
                        // 如果只需要第一个匹配结果,就加break;
                        // break;
                    }
                }
            }
            fileScanner.close();

            // 第三步:处理未找到的情况
            if (!isFound) {
                System.out.println("未找到该姓氏");
            }

        } catch (FileNotFoundException e) {
            System.out.println("错误:找不到学生记录文件,请检查路径是否正确。");
            e.printStackTrace();
        } catch (NumberFormatException e) {
            System.out.println("错误:文件格式有误,平均分不是有效数字。");
            e.printStackTrace();
        }
    }
}
关键细节调整提示
  • 文件格式适配:如果你的文件用逗号、制表符分隔,把split("\\s+")改成对应分隔符(比如split(","))
  • 复姓处理:如果有复姓(如欧阳、司马),把substring(0,1)改成substring(0,2)即可
  • 大小写兼容:用equalsIgnoreCase()可以让查询不区分大小写,不需要的话换成equals()就行
  • 多结果控制:如果要显示所有同姓氏的学生,就保留当前逻辑;只需要第一个匹配的,在找到后加break;跳出循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:22:25