- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此代码的目标是使用 main 方法 java 创建一个程序来分析用户输入的一段文本。
他们通过将文本输入扫描仪来做到这一点,然后由程序进行分析。分析的目的是产生词频、平均长度,并将结果以星号图的形式打印出来,单个“*”代表1个词。
例如“Birds can might Fly”应该输出以下结果:
Enter Text:
Birds can maybe fly
Birds can maybe fly
3 letter words: 2
5 letter words: 2
mean length: 4.0
3 letter words: **
5 letter words: **
Enter Text:
但是我得到了这个
Enter text:
Birds can maybe fly
Birds can maybe fly
3 letter words: 2
3 letter words: *
mean lenght: 4.0
3 letter words: 2
3 letter words: **
mean lenght: 4.0
5 letter words: 2
5 letter words: *
mean lenght: 4.0
5 letter words: 2
5 letter words: **
mean lenght: 4.0
Enter text:
有没有办法改变我的代码,使其输出在第一部分中看到的内容,而不是我在第二部分中得到的内容。
代码:
import java.util.Scanner;
public class Freq
{
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));
}}}}}
最佳答案
你的循环是混合的,所以你打印了太多的东西,而且有时在错误的时间打印。您应该拆分循环。
首先,您只想按长度输出计数:
for (int i = 1; i < counts.length; i++){
System.out.println(i + " letter words: " + counts[i]);
}
然后你想输出平均长度:
System.out.println(("mean length: ") + ((double) total / strings.length));
最后你想输出星号:
for (int i = 1; i < counts.length; i++){
StringBuilder sb = new StringBuilder(20);
sb.append(i);
sb.append(" letter words: ");
for (int j = 1; j <= counts[i]; j++) {
sb.append('*');
}
System.out.println(sb);
}
关于java - 词频循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25162905/
我在 Eclipse 中创建了一个 Java 程序。该程序计算每个单词的频率。例如,如果用户输入“I went to the shop”,程序将产生输出“1 1 1 2”,即 1 个字长 1 ('I'
我在工作中只有 R 可用,而且我以前用 Python 做过。我需要获取 CSV 文件中每组事件的计数。我在 Python 中进行了情绪分析,我在提供的表格中搜索了一本 Python 字典,其中包含每个
我想一个字一个字地读,然后将哪个字与我的结构数组中的字进行比较。如果我没有,我想在第一个空位添加。 #include #include #include #include using names
我想计算已转换为标记的文本文件中特定单词前后三个单词的频率。 from nltk.tokenize import sent_tokenize from nltk.tokenize import wor
我需要编写一个程序来计算文本中每个单词的频率,此外我需要能够返回 n 个最常用单词的列表(如果更多单词具有相同的频率(它们按字母顺序排序)。还有一个未计算在内的单词列表(停用词)。 停用词使用什么结构
我对 sklearn 的 TfidfVectorizer 在计算每个文档中单词的频率时有一个疑问。 我看到的示例代码是: >>> from sklearn.feature_extraction.tex
我是一名优秀的程序员,十分优秀!