如何使用两个矩阵创建对象?

时间:2018-05-23 18:21:41

标签: java arrays matrix

如果我能正确地做到这一点,我很难理解。

我必须构造一个包含两个2d矩阵的对象。问题是我觉得我不能正确理解对象是什么,所以我不知道我的代码是否正确。

我知道方法Cfiltering(int numberOfUsers, int numberOfMovies)我创建了两个对象变量,因为它需要两个不同的矩阵。由于该方法是指Cfiltering类对象,它创建一个Cfiltering对象并包含两个矩阵。

这与构建包含两个2d矩阵的对象相同吗?

这是我的第一篇文章,所以如果我不清楚我在问什么,我会道歉。 :)

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 :(得分:1)

一个简单的问题: 这是你的整个代码段,因为如果是这样,你就错过了一个分号。

二:为什么要两次创建Cfiltering方法。底部的那个(看起来像构造函数的那个​​)创建了要运行的方法,因此在主代码中,只需调用该方法来创建Cfiltering对象。

以下是您要调用它的示例,但如果您希望它更专业,请附上您的代码。

Cfiltering demo = new Cfiltering(7, 7)

答案 1 :(得分:0)

您提供的方法都称为构造函数。构造函数初始化一个新对象。这意味着在为对象分配内存后,它们就可以使用了。例如,请使用以下代码:

Cfiltering foo = new Cfiltering(5,5);

由于(5,5),这会调用你提供的第二个构造函数。该方法确实会在对象中创建两个2d矩阵,所以是的,该方法是正确的。您也可以通过以下方式调用您的第一种方法:

Cfiltering foo = new Cfiltering();

注意我如何将括号之间的空格留空。由于没有提供参数,Java将执行不带参数的方法,这是您的第一个参数。该方法还在新对象中创建了两个矩阵。

是的,你是对的。两种方法都创建了一个具有两个矩阵的对象。

Oracle还有一些关于此主题的好文档,you can find it here

答案 2 :(得分:0)

Cfiltering类的方法Cfiltering称为类的构造函数。此方法是第一个调用并在创建后设置对象的方法。使用 new 关键字 实例化 (已创建)对象。

Cfiltering cfiltering1 = new Cfiltering(1, 2);

这将创建Cfiltering类的cfiltering1对象。

Cfiltering cfiltering2 = new Cfiltering(2, 4);

这也会创建一个Cfiltering对象,但配置不同。

两个对象都有两个不同的2D矩阵,不仅在内存中,而且在长度上。