Проблема возникает в вашем All_user
конструкторе класса; вы пытаетесь установить ... что-то ... типа Ratings[]
для члена класса типа double[]
Вы можете сделать одно из следующих действий:
1 - Пусть ваш конструктор All_user
получит массив (или аргументы переменной длины), являющиеся экземплярами Rating
, и просто назначит его члену класса (массиву) того же типа:
public class All_user{
Rating [] All_users;
public All_user(Rating...argument) {
All_users = argument; // arguments is a Rating[]
}
}
или собрать все значения (double Ratings
) из каждого Rating
и отобразить их в массив
public class All_user{
double [] All_users;
public All_user(Rating...argument) {
ArrayList<Double> ratings = new ArrayList<Double>();
for (Rating r : argument) {
for (double d : r.Ratings) ratings.add(d);
}
All_users = new double[ratings.size()];
for (int i=0; i<ratings.size(); i++) All_users[i] = ratings.get(i);
}
}
Я думаю, что последнее - это то, что вы пытаетесь сделать. Также обратите внимание, что ваш класс Rating
также может быть переписан как
public class Rating{
double [] Ratings;
int CustomerID;
int Domain;
public Rating (int id, int d, double...x) {
double [] Ratings = x;
int CustomerID=id;
int Domain=d;
}
}
К вашему сведению: аргумент переменной длины всегда является последним в объявленных аргументах. Подробнее о varargs здесь и здесь .