Составление рекомендаций для книжных массивов Java - PullRequest
0 голосов
/ 23 октября 2019

Моя проблема в том, что я должен создать метод, который определяет для каждого из 30 человек оценку, которая показывает, насколько вкусы этого человека похожи на вкус пользователя программы. Храните эти оценки сходства в массиве из 30 двойных. Баллы сходства должны быть от 0 до 1.

Я пытался сравнивать массивы, но думаю, что я должен сделать средневзвешенное значение, когда вы проходите через оба массива. Однако один массив - это двумерный массив

. Вот оценки, которые я прочитал в массиве ratings.txt

-1 1 1 4 1 3 3 1 2 3 4 -1 4 1 2 4 5 4 2 3
3 -1 2 3 -1 2 5 -1 3 3 5 2 2 1 2 3 5 3 4 2
-1 1 -1 4 1 3 5 2 1 5 3 -1 5 2 1 3 4 5 3 2
-1 -1 3 2 -1 5 5 2 2 4 4 2 3 2 -1 3 4 4 3 1
2 1 1 5 2 2 4 2 3 4 3 -1 5 2 2 5 3 5 2 1
3 -1 3 4 -1 2 5 -1 -1 4 3 -1 3 -1 2 5 5 5 4 2
4 -1 4 2 3 -1 1 3 4 -1 1 4 4 4 -1 2 -1 1 4 4
4 3 3 3 -1 2 2 4 3 -1 2 4 3 4 2 -1 -1 2 2 3
3 -1 3 -1 3 4 -1 5 5 -1 -1 -1 1 -1 -1 1 1 2 -1 5
3 -1 3 4 3 4 -1 5 5 2 3 3 4 1 1 -1 -1 -1 -1 4
4 -1 4 4 1 3 -1 5 4 -1 1 3 4 1 -1 1 -1 1 -1 5
5 -1 3 1 4 3 -1 5 4 1 3 2 1 -1 4 2 1 -1 2 4
3 -1 5 1 4 4 2 5 5 1 2 3 1 1 -1 1 -1 1 -1 5
4 1 5 4 3 -1 1 3 4 -1 -1 3 3 -1 1 1 2 -1 3 5
-1 1 1 3 -1 3 1 3 -1 -1 3 -1 5 2 2 1 4 -1 5 -1
3 -1 2 3 1 5 4 3 3 -1 5 -1 5 2 -1 4 4 3 3 3
1 1 1 3 2 4 1 -1 -1 -1 5 -1 3 -1 -1 1 -1 2 5 2
-1 2 3 5 -1 4 3 1 1 3 3 -1 4 -1 -1 4 3 2 5 1
-1 1 3 3 -1 3 3 1 -1 -1 3 -1 5 -1 -1 3 1 2 4 -1
3 -1 2 4 1 4 3 -1 2 3 4 1 3 -1 2 -1 4 3 5 -1
-1 1 3 5 -1 4 2 1 -1 3 3 2 3 2 -1 3 1 -1 3 -1
3 2 2 3 -1 5 -1 -1 2 3 4 -1 4 1 -1 -1 -1 -1 4 2
-1 3 -1 -1 4 -1 2 -1 2 2 2 5 -1 3 4 -1 -1 2 -1 2
1 4 3 -1 3 2 1 -1 -1 -1 1 3 1 3 3 1 -1 -1 -1 3
4 3 3 -1 4 2 -1 4 -1 -1 2 4 -1 3 4 2 -1 -1 -1 4
-1 5 1 -1 4 1 -1 3 2 2 -1 4 1 3 3 1 -1 -1 -1 3
-1 4 2 1 5 -1 -1 2 1 1 -1 5 -1 5 4 1 2 2 -1 1
2 5 2 -1 3 -1 -1 1 -1 2 -1 4 2 4 3 -1 2 1 -1 -1
2 5 1 1 4 -1 2 1 -1 -1 2 4 -1 3 4 2 -1 -1 -1 4

пользователь присваивает свои оценки

public static int[] userrating(String A[]) {
        Scanner in = new Scanner(System.in);
        int userrating[] = new int[20];
        String prompt = "What is your rating of this book 1-5?: ";
        String unless = "If you have not read the book type in -1";

        for(int i =0; i<A.length; i++) {
            System.out.println(prompt + " " + A[i]);
            System.out.println(unless);
            userrating[i] = in.nextInt();
            if(i >= 19) {
                break;
            }

        }
        for(int k = 0; k <A.length; k++) {
            System.out.println("A ["+ k + " ]"+userrating[k]);
        }
        return userrating;
    }

в пределах рейтинга2d массив

public static int[][] ratings2() throws FileNotFoundException {
        Scanner in = new Scanner(new File("ratings.txt"));

        int [][]ratings = new int[30][20];

        for (int rows = 0; rows< ratings.length; rows++) {

            for(int col = 0; col < ratings[rows].length; col++) {
                int line = in.nextInt();
                ratings[rows][col] = line;

            } 

        }
        return ratings;

                }

}

Где я застрял, я просто знаю, как мне следует сравнивать эти два.

    public static void similarityscore(int pplratings[][], int yourrating[] ) {
        int bothratingsadded[] = new int[30];
        int justazero = 0;

        for(int i = 0; i < bothratingsadded.length; i++) {

            justazero =  justazero + yourrating[i] * pplratings[0][i];


        }}

ожидаемые результаты - иметь печатный массив, каждый из которых имеет30 баллов по сравнению с пользователем. Самый высокий балл был бы самым похожим. Поэтому рекомендуется книга, которую процессор оценил выше, чем у пользователя.

...