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
相关产品推荐
相关产品推荐

