当前位置: 首页 > 知识库问答 >
问题:

我正在尝试解析一个文本文件以计数器唯一字符串的数量并打印有关这些字符串的一些信息

卞琨
2023-03-14

因此,我正在编写一个程序,该程序读取一个文本文件(在本例中为“votes.txt”)并返回字符串的数量并将它们从最频繁到最不频繁进行排名。因此,使用votes.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 + ")";
        }
    }

}

以下是votes.txt:

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!

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

共有1个答案

燕烨
2023-03-14

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

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

 类似资料:
  • 问题内容: 我正在编写一个程序,该程序将以字符串形式输出唯一字符(通过扫描仪输入)。我创建了一个方法来尝试实现此目的,但我一直在获取不重复的字符,而不是字符串中唯一的一个(或多个)字符。我只想要唯一的字母。 这是我的代码: 这是上面代码的示例输出: 预期的输出将是: 问题答案: 根据所需的输出,当以后重复时,必须替换最初已经添加的字符,因此:

  • 我无法激活计数器++。到目前为止,s2能够读取s1,但不能计数出现的次数。如有任何帮助,我们将不胜感激。(我意识到我在错误的字符串中工作,但它帮助我首先在这里创建解决方案,然后将其发送到第二个字符串,这是不是很糟糕的逻辑?) 很抱歉问了这个愚蠢的问题,我对编程很陌生 //我需要一个扫描器来读取我所写内容,该扫描器应该计算一个字符的出现次数另一个扫描器声明的扫描器a会询问“write Somethi

  • 我们使用protobuf v.3通过HTTP将消息从C#客户端传输到Java服务器。 message proto如下所示: 客户端和服务器都对字符串使用UTF-8字符编码。 当我们使用像“abc”这样的短字符串值时,一切都很好,但是当我们试图传输包含198个字符的字符串时,我们遇到了一个例外: 我们试图比较包含protobuf数据的字节数组,但没有找到解决方案。对于“AAA”字符串字节数组以以下字

  • 我有一个文本包含一些我想要标记的单词,要标记的单词包含在一个列表中。问题是其中一些单词是其他单词的子字符串,但我想从列表中标记最长的可识别字符串。 例如,如果我的文本是“foo和bar不同于foo bar。”我的列表包含“foo”、“bar”和“foo bar”,结果应该是“[tag]foo[/tag]和[tag]bar[/tag]不同于[tag]foo bar[/tag]。”

  • 本文向大家介绍统计某一字符或字符串在另一个字符串中出现的次数相关面试题,主要包含被问及统计某一字符或字符串在另一个字符串中出现的次数时的应答技巧和注意事项,需要的朋友参考一下

  • str无法解析为变量Java(33554515)str无法解析或不是字段Java(33554502)