Search code examples
javastatisticsrating

Create a rating system in java


I am trying to rate an list of numbers eg. [297, 720, 840, 903, 1110, 1170] on a scale of 1 to 10 with 10 being the lowest and 1 being the highest number.

So list.get(0) would be 9/10 or 10/10 and list.get(2) would be 5 or 6 out of 10.

How can I do this in java?


Solution

  • I suggest something like: note = 10 - 9 * (value - minValue) / (maxValue - minValue)

        List<Integer> list = Arrays.asList(297, 720, 840, 903, 1110, 1170);
        Collections.sort(list);
        Integer min = list.get(0);
        Integer max = list.get(list.size() - 1);
        List<Integer> notes = new ArrayList<Integer>();
        for (Integer i : list) {
            notes.add(10 - (int) 9.0 * (i - min) / (max - min));
        }
        System.out.println(notes);
    

    Which gives:

    [10, 6, 5, 4, 2, 1]