【发布时间】:2019-12-12 22:58:23
【问题描述】:
所以我正在编写一个程序,它读取一个文本文件(在本例中为“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!
欢迎任何和所有解决方案。感谢您的阅读!
【问题讨论】:
-
这是否回答了您的问题:stackoverflow.com/questions/10301907/…?