I can't seem to run the following code in Eclipse. I do have a main method and this is the currently opened file. I even tried the "Run As" option but I keep getting this error: "editor does not contain a main type". What am I doing wrong here?
public class cfiltering {
/**
* @param args
*/
//remember this is just a reference
//this is a 2d matrix i.e. user*movie
private static int user_movie_matrix[][];
//remember this is just a reference
//this is a 2d matrix i.e. user*user and contains
//the similarity score for every pair of users.
private float user_user_matrix[][];
public cfiltering()
{
//this is default constructor, which just creates the following:
//ofcourse you need to overload the constructor so that it takes in the dimensions
//this is 2d matrix of size 1*1
user_movie_matrix=new int[1][1];
//this is 2d matrix of size 1*1
user_user_matrix=new float[1][1];
}
public cfiltering(int height, int width)
{
user_movie_matrix=new int[height][width];
user_user_matrix=new float[height][height];
}
public static void main(String[] args) {
//1.0 this is where you open/read file
//2.0 read dimensions of number of users and number of movies
//3.0 create a 2d matrix i.e. user_movie_matrix with the above dimensions.
//4.0 you are welcome to overload constructors i.e. create new ones.
//5.0 create a function called calculate_similarity_score
//you are free to define the signature of the function
//The above function calculates similarity score for every pair of users
//6.0 create a new function that prints out the contents of user_user_matrix
try
{
//fileinputstream just reads in raw bytes.
FileInputStream fstream = new FileInputStream("inputfile.txt");
//because fstream is just bytes, and what we really need is characters, we need
//to convert the bytes into characters. This is done by InputStreamReader.
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
int numberOfUsers=Integer.parseInt(br.readLine());
int numberOfMovies=Integer.parseInt(br.readLine());
//Now you have numberOfUsers and numberOfMovies to create your first object.
//this object will initialize the user_movie_matrix and user_user_matrix.
new cfiltering(numberOfUsers, numberOfMovies);
//this is a blankline being read
br.readLine();
String row;
int userNo = 0;
while ((row = br.readLine()) != null)
{
//now lets read the matrix from the file
String allRatings[]=row.split(" ");
int movieNo = 0;
for (String singleRating:allRatings)
{
int rating=Integer.parseInt(singleRating);
//now you can start populating your user_movie_matrix
System.out.println(rating);
user_movie_matrix[userNo][movieNo]=rating;
++ movieNo;
}
++ userNo;
}
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
}
}
Try closing and reopening the file, then press Ctrl+F11
.
Verify that the name of the file you are running is the same as the name of the project you are working in, and that the name of the public class in that file is the same as the name of the project you are working in as well.
Otherwise, restart Eclipse. Let me know if this solves the problem! Otherwise, comment, and I'll try and help.
private int user_movie_matrix[][];Th
. should be `private int user_movie_matrix[][];
.
private int user_movie_matrix[][];
should be private static int user_movie_matrix[][];
cfiltering(numberOfUsers, numberOfMovies);
should be new cfiltering(numberOfUsers, numberOfMovies);
Whether or not the code works as intended after these changes is beyond the scope of this answer; there were several syntax/scoping errors.
Did you import the packages for the file reading stuff.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
also here
cfiltering(numberOfUsers, numberOfMovies);
Are you trying to create an object or calling a method?
also another thing:
user_movie_matrix[userNo][movieNo]=rating;
you are assigning a value to a member of an instance as if it was a static variable
also remove the Th
in
private int user_movie_matrix[][];Th
Hope this helps.
Source: Stackoverflow.com