Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分别为每个单词添加频率(Java)_Java_File_Frequency - Fatal编程技术网

分别为每个单词添加频率(Java)

分别为每个单词添加频率(Java),java,file,frequency,Java,File,Frequency,我的程序没有显示任何错误消息(如运行时错误),但我基本上是在处理逻辑错误。所以问题是这个程序应该计算文件中每个单词的频率,但事实并非如此 我从这个程序得到的输出是每个单词的频率(1)。例如,我的文件包含单词“and”10次,但是这个程序显示“and”的频率是(1),而不是(1) 我真的非常感谢任何反馈 这是我的代码: import java.util.Scanner; import java.io.*; public class FrequencyOfWords { static

我的程序没有显示任何错误消息(如运行时错误),但我基本上是在处理逻辑错误。所以问题是这个程序应该计算文件中每个单词的频率,但事实并非如此

我从这个程序得到的输出是每个单词的频率(1)。例如,我的文件包含单词“and”10次,但是这个程序显示“and”的频率是(1),而不是(1)

我真的非常感谢任何反馈

这是我的代码:

import java.util.Scanner;
import java.io.*;

public class FrequencyOfWords {

     static int frequency[] = new int[999];
     static String words[] = new String[999];

     static int count_Word = 0;
     static int individual_Count = 0;

     public static void main(String [] args) throws Exception {

         methodForInputtingWords();
         methodForPrintingOutWords();

     }

    public static void methodForInputtingWords() throws Exception {

    File file = new File("file.txt");
    Scanner input = new Scanner(file);

         String x;

         while (input.hasNext()) {

             x = input.next();
             words[count_Word] = x;
             count_Word = count_Word + 1;

             if (count_Word == individual_Count) {
                 words[count_Word] = x;
                 individual_Count = individual_Count + 1;

             } else {

                 frequency[count_Word] = frequency[count_Word] + 1;

             }

         }

    }

     public static void methodForPrintingOutWords() {

         for (int k = 0; k < count_Word; k++) {

             System.out.printf(" %10d %5s", frequency[k], words[k]);
         }
     }

}
import java.util.Scanner;
导入java.io.*;
公共类词频{
静态整数频率[]=新整数[999];
静态字符串字[]=新字符串[999];
静态整数计数\u字=0;
静态整数个人计数=0;
公共静态void main(字符串[]args)引发异常{
输入单词的方法();
打印输出字()的方法;
}
InputingWords()的公共静态无效方法引发异常{
File File=新文件(“File.txt”);
扫描仪输入=新扫描仪(文件);
字符串x;
while(input.hasNext()){
x=输入。下一步();
字数[计算字数]=x;
计数字=计数字+1;
if(count\u Word==单个\u计数){
字数[计算字数]=x;
个人计数=个人计数+1;
}否则{
频率[计数字]=频率[计数字]+1;
}
}
}
打印输出字()的公共静态无效方法{
for(int k=0;k
您可以使用
HashMap
来存储单词和频率,其中
是一个单词,
是单词的频率。

现在,您将每个单词放入单词数组中的一个新字段,而不检查它是否已经在其中

一个简单的解决方案可以是前面提到的哈希表,其中单词作为键,in作为值

if(wordHashTable.containsKey(word))
{
  //increase value for this key
}
else
{
  // add new key with count 1
}

坦率地说,我看不出这是怎么算数的。你有没有参加过这个项目?你能详细说明你的逻辑吗?顺便说一句,构建频率图有很多解决方案,它们更容易使用,是一个很好的频率图。如果您不确定如何创建一个,只需使用一个现有的算法。ArrayList类是否执行与HashMap类相同的功能?很抱歉,我对Java.No的理解有限。ArreyList用于存储与其他对象没有关系的对象,而HashMap用于存储对象对对象关系。欠费清单就像是一个真实世界的记录清单。在一行字上。HashMap是一个字典:一个主题(键)及其解释(值)