如果我能正确地做到这一点,我很难理解。
我必须构造一个包含两个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];
}
答案 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矩阵,不仅在内存中,而且在长度上。