Java 我试图解析一个文本文件,以计数唯一字符串的数量,并打印有关这些字符串的一些信息
因此,我正在编写一个程序,读取一个文本文件(在本例中为“vots.txt”),并返回字符串的数量,并将它们从最频繁到最不频繁进行排序。因此,使用vots.txt,输出应按如下方式打印控制台: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
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!