Как мне создать объект с двумя матрицами? - PullRequest
0 голосов
/ 23 мая 2018

Мне трудно понять, правильно ли я это делаю.

Я должен построить объект, который содержит две двумерные матрицы.Проблема в том, что я чувствую, что не правильно понимаю, что такое объект, поэтому я не знаю, правильный ли мой код.

Я знаю, что для метода Cfiltering(int numberOfUsers, int numberOfMovies) я создал еще две переменные объекта,потому что он хочет две разные матрицы.Поскольку этот метод ссылается на объект класса Cfiltering, который создает объект Cfiltering и содержит две матрицы.

Это то же самое, что построить объект, содержащий две двумерные матрицы?

Это мой первый пост, поэтому я прошу прощения, если мне непонятно, о чем я спрашиваю.:)

public class Cfiltering {
  private int userMovieMatrix[][];
  private float userUserMatrix[][];

  public Cfiltering() {
    userMovieMatrix = new int[1][1];
    userUserMatrix = new float[1][1];
  }

  /*
   * TODO:COMPLETE THIS I.E. APPROPRIATELY CREATE THE userMovieMatrix AND
   * userUserMatrix WITH CORRECT DIMENSIONS.
   */
  /**
   * Constructs an object which contains two 2d matrices, one of size
   * users*movies which will store integer movie ratings and one of size
   * users*users which will store float similarity scores between pairs of
   * users.
   * 
   * @param numberOfUsers Determines size of matrix variables.
   * @param numberOfMovies Determines size of matrix variables.
   */
  public Cfiltering(int numberOfUsers, int numberOfMovies) {
    // this is a 2d matrix of size users*movies
    userMovieMatrix = new int [numberOfUsers][numberOfMovies];
    // this is a 2d matrix of size users*users
    userUserMatrix = new float [numberOfUsers][numberOfUsers];
  }

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

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

Два: почему вы создаете метод Cfiltering дважды.Внизу (тот, что выглядит как конструктор) создается метод для запуска, поэтому в вашем основном коде просто вызовите этот метод для создания объекта Cfiltering.

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

Cfiltering demo = new Cfiltering(7, 7)
0 голосов
/ 23 мая 2018

Метод Cfiltering класса Cfiltering называется конструктором класса.Этот метод вызывается первым и устанавливает объект после создания.Объекты созданы (созданы) с ключевым словом new .

Cfiltering cfiltering1 = new Cfiltering(1, 2);

Это создает объект cfiltering1 класса Cfiltering.

Cfiltering cfiltering2 = new Cfiltering(2, 4);

При этом также создается объект Cfiltering, но с разной конфигурацией.

Оба объекта имеют две двумерные матрицы, которые различаются не только в памяти, но и по длине.

0 голосов
/ 23 мая 2018

Оба предоставленных вами метода называются constructors .Конструкторы инициализируют новый объект.Это означает, что после выделения памяти для объекта они готовят его к использованию.Например, возьмите следующий фрагмент кода:

Cfiltering foo = new Cfiltering(5,5);

Это вызовет второй предоставленный вами конструктор из-за (5,5).Этот метод действительно создаст две двумерные матрицы внутри вашего объекта, так что да, этот метод правильный.Вы также можете вызвать свой первый метод, выполнив:

Cfiltering foo = new Cfiltering();

Обратите внимание, как я оставил пустое пространство между скобками.Поскольку параметры не предоставлены, Java выполнит метод без параметров, который является вашим первым.Этот метод также создает две матрицы внутри нового объекта.

Так что да, вы правы.Оба метода создают объект с двумя матрицами.

Oracle также имеет хорошую документацию по этому вопросу, вы можете найти ее здесь .

...