如何根据Scanner输入匹配ArrayList索引内元素,返回对应整索引内容?
解决方案:根据输入匹配ArrayList中的行并输出整行内容
Got it, let's break this down simply since you already have your file lines stored in an ArrayList. Here's exactly how to implement the feature you need:
核心逻辑步骤
- 通过
Scanner获取用户输入 - 遍历ArrayList中的每一行内容
- 检查当前行是否包含用户输入的字符串
- 匹配成功则输出该行的全部内容
- 若没有找到匹配项,给出提示信息
完整代码示例
假设你已经完成了读取文件并将每行内容存入ArrayList<String>的代码,下面是实现匹配功能的补充代码:
import java.util.Scanner; import java.util.ArrayList; public class LineMatcher { public static void main(String[] args) { // 这里是你已有的读取文件到ArrayList的代码 ArrayList<String> fileLines = new ArrayList<>(); // 用你的示例数据做演示: fileLines.add("dog, cat, mouse"); fileLines.add("football, baseball, rugby"); // 获取用户输入 Scanner scanner = new Scanner(System.in); System.out.print("请输入要查找的内容: "); String searchTerm = scanner.nextLine().trim(); // 去除首尾空格,避免不必要的匹配失败 // 查找匹配项 boolean matchFound = false; for (String line : fileLines) { // 检查当前行是否包含搜索关键词 // 如果需要忽略大小写,可以改成 line.toLowerCase().contains(searchTerm.toLowerCase()) if (line.contains(searchTerm)) { System.out.println("找到匹配内容: " + line); matchFound = true; // 如果只需要第一个匹配项,保留break;如果要输出所有匹配行,删除这行break即可 break; } } // 处理无匹配的情况 if (!matchFound) { System.out.println("没有找到包含'" + searchTerm + "'的内容"); } scanner.close(); } }
关键细节说明
- 去除空格:
trim()方法能避免用户输入前后的空格导致匹配失败(比如输入" football "也能匹配到目标内容)。 - 大小写处理:默认
contains()是区分大小写的,如果需要忽略大小写差异(比如输入"Football"也能匹配"football"),把匹配条件改成:if (line.toLowerCase().contains(searchTerm.toLowerCase())) - 多匹配处理:如果文件中有多行都包含搜索关键词,删除代码中的
break;就能输出所有匹配的行;保留break则只输出第一个匹配项。
按照你的示例场景,当输入"football"时,这段代码会找到ArrayList中索引1的行,并完整输出"football, baseball, rugby"。
内容的提问来源于stack exchange,提问作者marrimred99
相关产品推荐
相关产品推荐

