Java 我试图解析一个文本文件,以计数唯一字符串的数量,并打印有关这些字符串的一些信息

Java 我试图解析一个文本文件,以计数唯一字符串的数量,并打印有关这些字符串的一些信息,java,file,maps,voting,Java,File,Maps,Voting,因此,我正在编写一个程序,读取一个文本文件(在本例中为“vots.txt”),并返回字符串的数量,并将它们从最频繁到最不频繁进行排序。因此,使用vots.txt,输出应按如下方式打印控制台: 1. Trump = 7 2. Hillary = 7 3. Bernie = 6 4. Jeb! = 5 5. Putin = 3 6. Colbert = 1 7. Stein = 1 我得到的错误如下: Error:(26, 29) java: non-static variable this ca

因此,我正在编写一个程序,读取一个文本文件(在本例中为“vots.txt”),并返回字符串的数量,并将它们从最频繁到最不频繁进行排序。因此,使用vots.txt,输出应按如下方式打印控制台:

1. Trump = 7
2. Hillary = 7
3. Bernie = 6
4. Jeb! = 5
5. Putin = 3
6. Colbert = 1
7. Stein = 1
我得到的错误如下:

Error:(26, 29) java: non-static variable this cannot be referenced from a static context
Error:(21, 28) java: non-static variable this cannot be referenced from a static context
代码如下:

import java.io.FileNotFoundException;
import java.io.File;
import java.util.*;

public class Profile {

    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("votes.txt");
        Scanner inFile = new Scanner(file);
        HashMap<String, Integer> map = new HashMap<>();
        String input = inFile.next();

        while(inFile.hasNext());{
            if(!map.containsKey(input)){
                map.put(input, 1);
            }
            else{
                map.put(input, map.get(input) + 1);
            }
        }
        Record[] records = new Record(map.size());
        Iterator<String> iterator = map.keySet().iterator();
        int index = 0;
        while(iterator.hasNext()){
            String key = iterator.next();
            Record record = new Record(key, map.get(key));
            records[index] = record;
            index++;
        }
        Arrays.sort(records, Collections.reverseOrder());
        for(int i = 0; i < 5; i++){
            System.out.println(records[i]);
        }
    }
    class Record implements Comparable<Record>{
        String key;
        int count;
        public Record(String key, int count){
            this.key = key;
            this.count = count;
        }
        public int compareTo(Record other){
            if(this.count < other.count){
                return -1;
            }
            else if (this.count > other.count){
                return 1;
            }
            else{
                return  0;
            }
        }
        public String toString(){
            return  "(" + key + ", " + count + ")";
        }
    }

}

欢迎任何和所有解决方案。谢谢你的阅读

如果您遵循注释中的链接,您将看到您的
记录类
配置文件
的内部类,因此您无法从
静态
上下文访问它,因为它是
非静态
。解决此问题的最佳方法是将
类记录
移到
类配置文件
之外

编辑:
按照David Conrad在评论中所说的,您可以使该类保持静态,并将其作为一个内部类,但我不建议这样做。我不打算提及它,因为我不建议这样做,但David是对的,为了完整性起见,应该提及它。

这是否回答了您的问题:?或者,OP可以使
记录
成为一个静态类,但它根本没有理由成为一个内部类。我仅出于完整性考虑才加入此评论。:)
Bernie Trump Bernie Bernie
  Trump Trump Hillary

                Jeb!

Hillary Trump Bernie Hillary
   Bernie
Putin  Putin Putin
 Hillary
   Bernie
  Hillary Hillary Hillary Trump


  Colbert

               Jeb!     Jeb!
    Trump

          Johnson
                        Stein
 Jeb!  Jeb!