JAVA, array nehmen eine variable Anzahl von Objekten als Parameter
Ich versuche ein array zu nehmen, die eine variable Anzahl von Objekten als Eingabe. Ich bin neu in der Programmierung, so entschuldige ich mich im Voraus.
Hier ist mein code:
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;
}
}
public class All_user{
double [] All_users;
public All_user(Rating...argument) {
double [] All_users={Rating...argument};
}
}
Aber ich bekomme diese Fehlermeldung im Zusammenhang mit double[] All_users={Bewertung..arguments);:
Multiple markers at this line
- Syntax error on token "...", . expected
- arguments cannot be resolved or is
not a field
Irgendwelche Gedanken? Vielen Dank im Voraus!
- Variablen-Namen sollten camelCase: Bewertungen -> ratings, CustomerID -> customerID (einige bevorzugen, "customerId") und Sie sollten nicht verwenden, die unterstreichen, die in der Klasse name: All_users -> AllUsers. Versuchen Sie zu gewöhnen, es macht Ihr Leben einfacher. Als kurze Anmerkung: Wenn das argument ist definiert als Bewertung... Bewertungen (varargs), die param-ratings Art des Ratings[].
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem kommt in Ihrem
All_user
Konstruktor der Klasse; Sie versuchen... etwas... der TypRatings[]
zu einer Klasse des Typsdouble[]
Könnten Sie Folgendes tun :
1 - Haben Sie Ihre
All_user
's Konstruktor erhält ein array (oder variable-length arguments) InstanzenRating
und einfach ordnen Sie die Klasse Element (ein array) von der gleichen Art :sammeln oder alle Werte (
double Ratings
) von jedemRating
und ordnen Sie Sie in ein arrayIch denke letzteres ist das, was Sie zu tun versuchen. Beachten Sie auch, dass Ihre
Rating
Klasse könnte auch umgeschrieben werden alsFYI: Die variable-Länge-argument ist immer die Letzte in der deklarierten Argumente. Mehr auf varargs hier und hier.
Variable length args (var-args) zugegriffen werden kann wie ein array. Angenommen, Sie möchten, flat-pack alle Bewertungen von allen Benutzern in einer einzigen
double[]
imAll_user
, dann:argument
wird dargestellt als ein array vonRating
Objekte, in diesem Zusammenhang verwendet. Wirklich vorsichtig sein, mit varargs wenn. Es ist selten eine gute design-Entscheidung, es sei denn, du machst eine Bibliothek.Wenn Sie die vargs notation, die arg behandelt wird als ein array. In Ihrem Fall wäre es ein array von
Rating
. Sie können die Referenz innerhalb der Methode Körper, als würden Sie ein array, dh, als wenn es wurde erklärt, wiearguments[]
.Ein paar Kritiken:
Rating
zu einemdouble
, so dass Sie bereits in Schwierigkeiten....
notation ist nur in der Deklaration der Methode, nicht zum verweisen auf die arg innerhalb der Methode Körper.arguments
, wenn Sie deklarieren es alsargument
.Rating...
und den Namen des arg.