【发布时间】:2015-08-13 10:35:37
【问题描述】:
我在 Eclipse 中创建了一个 Java 程序。该程序计算每个单词的频率。例如,如果用户输入“我去商店”,程序将产生输出“1 1 1 2”,即 1 个长度为 1 的单词 ('I') 1 个长度为 2 的单词 ('to') 1 个单词长度为 3('the')和 2 个长度为 4 的单词('went','shop')。
我创建了这个程序来读取用户输入的字符串,但我想调整代码以读取文本文件的每一行。任何帮助都会很棒。
import java.util.Scanner;
public class WordLengthFrequency
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
while (true)
{
System.out.println("Enter text: ");
String s;
s = scan.nextLine();
String input = s;
String strippedInput = input.replaceAll("\\W", " ");
System.out.println("" + strippedInput);
String[] strings = strippedInput.split(" ");
int[] counts = new int[6];
int total = 0;
for (String str : strings)
if (str.length() < counts.length)
counts[str.length()] += 1;
for (String s1 : strings)
total += s1.length();
for (int i = 1; i < counts.length; i++){
StringBuilder sb = new StringBuilder(i).append(i + " letter words: ");
for (int j = 1; j <= counts[i]; j++) {
sb.append('*');
System.out.println(i + " letter words: " + counts[i]);
System.out.println(sb);
System.out.println(("mean lenght: ") + ((double) total / strings.length));
}
}
}
}
}
【问题讨论】:
-
Best way to read a text file 的可能重复项
-
只需将
Scanner scan = new Scanner(System.in);替换为Scanner scan = new Scanner(new File("file path here"));。简单快捷的方法 -
谢谢!但现在我得到一个错误:线程“main”中的异常 java.util.NoSuchElementException:在 mallinson_Liam_8.main(mallinson_Liam_8.java:16) 的 java.util.Scanner.nextLine(Scanner.java:1516) 处找不到行
-
您可以使计算 wordLenghts 的逻辑更容易(如果您可以使用 java8)
Map<Integer, Long> collect = Arrays.stream(strippedInput.split(" ")).collect( Collectors.groupingBy(String::length, Collectors.counting()));。其中 Map 中的 Integer Value 是单词的长度,long-value 是出现次数
标签: java eclipse text-files word-frequency