【问题标题】:How do I create an object with two matrices?如何创建具有两个矩阵的对象?
【发布时间】:2018-05-23 18:21:41
【问题描述】:

如果我正确地执行此操作,我很难理解。

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

我知道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];
  }

【问题讨论】:

    标签: java arrays matrix


    【解决方案1】:

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

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

    这是一个运行它的例子,但如果你想让它更专业,请在上面附上你的代码。

    Cfiltering demo = new Cfiltering(7, 7)
    

    【讨论】:

      【解决方案2】:

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

      Cfiltering cfiltering1 = new Cfiltering(1, 2);
      

      这将创建 Cfiltering 类的 cfiltering1 对象。

      Cfiltering cfiltering2 = new Cfiltering(2, 4);
      

      这也创建了一个 Cfiltering 对象,但具有不同的配置。

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

      【讨论】:

        【解决方案3】:

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

        Cfiltering foo = new Cfiltering(5,5);
        

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

        Cfiltering foo = new Cfiltering();
        

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

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

        Oracle 在这个主题上也有一些很好的文档,you can find it here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多