gpt4 book ai didi

Java程序-单词统计

转载 作者:行者123 更新时间:2023-12-01 15:25:04 25 4
gpt4 key购买 nike

我创建了一个 Java 程序,该程序根据关键字文本文件从各种社交媒体 API 发出并返回搜索结果,并将返回的结果写入另一个文本文件。

我现在正在尝试使用另一个类来扫描搜索结果文本文件并返回有关在搜索结果中找到“关键字”的次数的统计信息。我基本上是尝试针对 keywords.txt 文件运行搜索。

我一直在尝试让下面的代码正常工作,但我只能让它返回所有单词,而不仅仅是 keywords.txt 文件中的单词。

我尝试让输入 StreamReader 工作但无济于事。任何帮助将不胜感激。

<小时/>
package search;

import java.util.*; // Provides TreeMap, Iterator, Scanner
import java.io.*; // Provides FileReader, FileNotFoundException

public class SearchResults
{

public static void main(String[] args)
{
TreeMap<String, Integer> frequencyData = new TreeMap<String, Integer>();
readWordFile(frequencyData);
printAllCounts(frequencyData);
}

public static int getCount(String word, TreeMap<String, Integer> frequencyData)
{
if (frequencyData.containsKey(word))
{ // The word has occurred before, so get its count from the map
return frequencyData.get(word); // Auto-unboxed
}
else
{ // No occurrences of this word
return 0;
}
}

public static void printAllCounts(TreeMap<String, Integer> frequencyData)
{
System.out.println("-----------------------------------------------");
System.out.println(" Occurrences Word");

for(String word : frequencyData.keySet())
{
System.out.printf("%15d %s\n", frequencyData.get(word), word);
}

System.out.println("-----------------------------------------------");
}

public static void readWordFile(TreeMap<String, Integer> frequencyData)
{
Scanner wordFile;
String word; // A word read from the file
Integer count; // The number of occurrences of the word

try
{
wordFile = new Scanner(new FileReader("SearchResults.txt"));
}
catch (FileNotFoundException e)
{
System.err.println(e);
return;
}

while (wordFile.hasNext())
{
// Read the next word and get rid of the end-of-line marker if needed:
word = wordFile.next();

// Get the current count of this word, add one, and then store the new count:
count = getCount(word, frequencyData) + 1;
frequencyData.put(word, count);
}
}
}

最佳答案

在那里,我清理了您的代码,并添加了对 keywords.txt 中找到的所有关键字的过滤。

public static void main(String[] args) throws Exception {
printAllCounts(
readWordFile("SearchResults.txt", loadKeywords("keywords.txt")));
}

private static Map<String, Integer> readWordFile(
String fname, Set<String> keywords) throws FileNotFoundException
{
final Map<String, Integer> frequencyData = new TreeMap<String, Integer>();
for (Scanner wordFile = new Scanner(new FileReader(fname));
wordFile.hasNext();)
{
final String word = wordFile.next();
if (keywords.contains(word))
frequencyData.put(word, getCount(word, frequencyData) + 1);
}
return frequencyData;
}

private static void printAllCounts(Map<String, Integer> frequencyData) {
System.out.println("-----------------------------------------------");
System.out.println(" Occurrences Word");
for(Map.Entry<String, Integer> e : frequencyData.entrySet())
System.out.printf("%15d %s\n", e.getValue(), e.getKey());
System.out.println("-----------------------------------------------");
}

private static int getCount(String word, Map<String, Integer> frequencyData) {
return frequencyData.containsKey(word)? frequencyData.get(word) : 0;
}

private static Set<String> loadKeywords(String fname)
throws FileNotFoundException
{
final Set<String> result = new HashSet<String>();
for (Scanner s = new Scanner(new FileReader(fname)); s.hasNext();)
result.add(s.next());
return result;
}

关于Java程序-单词统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com