Eclipse d'erreur: “l'Éditeur ne contient pas l'un des principaux type”
Je n'arrive pas à exécuter le code suivant dans Eclipse. J'ai une méthode main et c'est le fichier actuellement ouvert. J'ai même essayé de la "Exécuter en tant Que" option, mais je reçois ce message d'erreur: "l'éditeur n'a pas à contenir un type principal". Ce que je fais mal ici?
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());
}
}
}
- Quel est le nom du fichier contenant ce code?
- cfiltering.java
- Je pense que c'est une question tout à fait pertinente. En fait, j'ai couru dans cela et compris mon problème: j'ai créé une classe (à tort) sous le dossier source: src/main/test, et eclipse ne pouvais pas accepter ça. Quand j'ai créé correctement sous src/test/java, ce message d'erreur a disparu.
Vous devez vous connecter pour publier un commentaire.
Essayez de fermer et de rouvrir le fichier, puis appuyez sur
Ctrl+F11
.Vérifiez que le nom du fichier que vous êtes en cours d'exécution est le même que le nom du projet que vous travaillez, et que le nom de la classe publique dans ce fichier est le même que le nom du projet sur lequel vous travaillez en tant que bien.
Sinon, redémarrez Eclipse. Laissez-moi savoir si cela résout le problème! Sinon, un commentaire, et je vais essayer de l'aider.
Avez-vous importer les packages pour la lecture des fichiers de trucs.
également ici
Êtes-vous essayer de créer un objet ou l'appel d'une méthode?
aussi autre chose:
de l'affectation d'une valeur à un membre d'une instance comme si c'était une variable statique
retirez également le
Th
dansEspère que cette aide.
private int user_movie_matrix[][];Th
. devrait être`private int user_movie_matrix[][];
.private int user_movie_matrix[][];
devrait êtreprivate static int user_movie_matrix[][];
cfiltering(numberOfUsers, numberOfMovies);
devrait êtrenew cfiltering(numberOfUsers, numberOfMovies);
Si le code fonctionne comme prévu à l'issue de ces changements est au-delà de la portée de cette réponse; il y avait plusieurs syntaxe/portée du des erreurs.
public static void main(String[] args)
.