import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Map<String, List<Integer>> map = new HashMap(); int n = 0; List<String> lines = new ArrayList<>(); while (true) { String line = in.nextLine(); if (line.equals("!!!!!")) break; n++; lines.add(line); String[] words = line.split(" "); for (String word : words) { if (map.containsKey(word)) { if (map.get(word).contains(n)) continue; map.get(word).add(n); } else { List<Integer> index = new ArrayList<>(); index.add(n); map.put(word, index); } } } List<Map.Entry<String, List<Integer>>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, Comparator.comparing(Map.Entry::getKey)); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } while (true) { String[] keys = in.nextLine().split(" "); List<List<Integer>> index = new ArrayList<>(); for (int i = 0; i < keys.length; i++) { for (int j = 0; j < list.size(); j++) { if (list.get(j).getKey().equals(keys[i])) { index.add(list.get(j).getValue()); } } } if (index.size() == 0) { System.out.println("found 0 results"); continue; } List<Integer> result = index.get(0); if (keys.length >= 2) { for (int i = 1; i < index.size(); i++) { result.retainAll(index.get(i)); } if (result.size()==0){ System.out.println("found 0 results"); continue; } } System.out.println(result); for (int i : result) { System.out.println("line "+i+":"+lines.get(i-1)); } } } }
时间: 2024-02-15 21:27:19 浏览: 298
这是一段 Java 代码,它实现了一个简单的文本搜索功能。用户可以输入多行文本,程序会将每个单词与所在的行数存储在一个 HashMap 中。用户可以输入多个关键词,程序会返回包含所有关键词的行号。如果没有找到任何匹配,程序会输出 "found 0 results"。如果找到了匹配的行,程序会输出行号和具体的文本内容。
相关问题
import java.io.*; import java.util.Arrays; import java.util.Scanner; public class FileTest { public static void main(String[] args) throws IOException { // 接收给定的一行字符串 Scanner scanner = new Scanner(System.in); String line = scanner.nextLine();
// 创建文件对象,并检查文件是否存在 File file = new File(line); if (!file.exists()) { System.out.println("文件不存在!"); return; } // 读取文件内容 BufferedReader reader = new BufferedReader(new FileReader(file)); String content = ""; String temp; while ((temp = reader.readLine()) != null) { content += temp + "\n"; } // 关闭文件读取器 reader.close(); // 输出文件内容 System.out.println("文件内容:\n" + content); } }
这段代码是一个读取文件并输出文件内容的Java程序。首先,通过Scanner接收用户输入的文件路径,然后判断文件是否存在。如果文件不存在,则输出提示信息并结束程序。如果文件存在,则创建文件读取器并读取文件内容,将读取到的内容存储在一个字符串变量中。最后,关闭文件读取器并输出文件内容。
package dahwdh; import java.util.*; public class dahwhd { public static void main(String[] args){ Sc
这个代码片段似乎是一个简单的Java程序开始部分,它包含了一个名为`dahwhd`的公共类,并且导入了`java.util.*`包,这通常用于使用集合框架和其他实用工具类。
`package dahwdh;`声明了一个名为`dahwdh`的包,可能是为了组织相关的类文件。`public class dahwhd`定义了一个名为`dahwhd`的公共类,这是Java程序的基本结构单元,类里面可能会有方法、变量等成员。
接下来的`main(String[] args)`方法是程序的入口点,所有Java应用程序都会从这里开始执行。`args`是一个String数组,通常在命令行运行时传递给程序的参数会被赋值到这个数组里。
完整的`main`方法可能会像这样:
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象读取用户输入
// 类的其他代码和方法调用会放在这里
}
```
在这个例子中,我们看到`Scanner`类被引入,可能会有一个意图是从控制台读取用户的输入。
阅读全文