要求用户为您提供包含一系列单词的文件的名称,每行一个,并计算文件中每个单词的分数。向用户报告哪个词最积极,哪个词最为消极。示例运行可能如下所示:
表示如下文件:
terrible
horrible
ok
refreshing
formulaic
这基本上就是我要做的...... 我正在为这个问题写的代码是
// Scanner input for user to put in values
Scanner input = new Scanner(System.in);
// File
File file = new File("MovieReviews.txt");
Scanner fileInput = new Scanner(file);
// User input of file
System.out.println(" Enter the name of the file with words you want to score : ");
String fileName = input.nextLine();
File file2 = new File(fileName);
Scanner fileInput2 = new Scanner(file2);
// Loop
while (fileInput2.hasNext()) {
String word = fileInput2.nextLine().toLowerCase();
double scores = (double) rating(fileInput, word);
}
}
// Method
public static double rating(Scanner fileInput, String word) {
// Variables
double score = 0;
double rate = 0;
int count = 0;
// Loop
while (fileInput.hasNext()) {
int rating = fileInput.nextInt();
String review = fileInput.nextLine().toLowerCase();
int location = review.indexOf(word);
if (location >= 0) {
count++;
rate = rate + rating;
score = rate / count;
}
}
return score;
}
}
请帮帮我.. 我不知道如何比较这些值并获得最大/最小值。
答案 0 :(得分:0)
在阅读了您的问题并仔细阅读了您的代码之后,我认为这就是您的目标:
您有以下格式的文件1:
abc
xyz
sdf
您的程序要求用户输入文件2位置(与上述文件不同),该位置只包含文字内容(电影)。
Map
然后你的程序应该从文件2中读取每个单词(电影)并从文件1中找到他们的评论并取平均值。最后,你的节目必须返回评价最高的电影和评论最少的电影(例如在上面的例子中,xyz的平均评价最高,而abc的平均评价最低。(电影sdf没有任何评论)在文件1中,它将被忽略)。
<强>解决方案强>
您可以使用Map<String, Double>
存储字词(电影名称)作为键,平均评分值作为值。换句话说,您可以使用Map<String, Double> map= new HashMap<>();
// Loop
while (fileInput2.hasNext()) {
String word = fileInput2.nextLine().toLowerCase();
double scores = (double) rating(fileInput, word);
map.put(word, scores);
}
Collections.sort(map, new Comparator<Entry<String, Double>>()
{
public int compare(Entry<String, Double>> o1, Entry<String, Double>> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
之类的数据结构。然后,您所要做的就是对集合进行排序并返回第一个和最后一个项目。请参阅以下从您的代码片段修改的代码段:
Time[tab]Signal
0[tab]1.05
0.5[tab]1.06
1[tab]1.09
1.5[tab]1.12