你如何比较你从一个方法调用的每个值?

时间:2017-02-18 02:33:21

标签: java string file methods

要求用户为您提供包含一系列单词的文件的名称,每行一个,并计算文件中每个单词的分数。向用户报告哪个词最积极,哪个词最为消极。示例运行可能如下所示:

表示如下文件:

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;
}

}

请帮帮我.. 我不知道如何比较这些值并获得最大/最小值。

1 个答案:

答案 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