Vorkommende Farben ermittel und als Array zurückgeben

Wir sollen einen Algorithmus implementieren, der für einen Raster (mit Spalten und Zeilen) die Farben die vorkommen ermittelt. Maximal stehen 10 Farben zur Verfügung, diese sind schon von 0 bis 9 als Integer-Werte codiert.
Die Methode soll static int[] colors(int[] p) heißen. und einen Array mit allen Farben enthalten in p, zurückgeben.
Bitte um Hilfe
 
Also bevor du dich jetzt lange daran aufhältst, wie man in Java mit Farben umgeht: Die Aufgabe sieht für mich so aus, als würde es im Prinzip nur um Ganzzahlen gehen (also int), und das mit den Farben ist nur da, damit es interessanter klingt. Im Prinzip lautet die Aufgabenstellung also nur, dass die Funktion colors alle in p vorkommenden Zahlen zurückgeben soll. Das es nur um Zahlen von 0-9 geht braucht die colors Methode ja auch nicht zu wissen, weil sowieso keine anderen Zahlen reinkommen können.

Was mir bei dem int[] colors(int[] p) komisch vorkommt, ist, ist dass p ein eindimensionales Array ist. Du hast beschrieben, dass es um Spalten und Zeilen, also etwas zweidimensionales ghet. Bist du sicher, dass die Funktion so aussehen muss?
 
Sorry, da hab ich was verwechselt. Den Raster p kann man als 1d Array sehen, also geht es nicht um Spalten und Zeilen. Also vergiss das mit Spalten und Zeilen..

Wie geht dann die Funktion colors wo alle vorkommende Zahlen returnt werden? Bin noch Anfänger, habe erst seit 2 Monaten den Java-Kurs...
 
Überlege am Besten erst einmal unabhängig von Java, welche Schritte so eine Funktion ausführen muss: Du weißt ja schon anhand der Aufgabenstellung, dass du eine Reihe von Zahlen reinbekommst. Als Ausgabe wird eine neue Reihe von Zahlen verlangt, die jede vorkommende Zahl der reinkommenden Reihe enthält.

Welche Arbeitsschritte sind notwendig, um das Ziel zu erreichen?
 
Ich habe es so probiert, aber so kommt eine fehlermeldung...:/
static int[] colors(int[] p) {
int[] colors = new int[] {0,1,2,3,4,5,6,7,8,9};

for (int j = colors.length-1; j >= 0; j--) {
for (int i = 0 ; i < p.length; i++) {
if (p == colors[j]) {
colors[j]=-1;}

}
for (int x=0; x<colors.length; x++) {
if(colors[x]==-1) colors[j]=x;
j++;
}
}


return colors;
}
 
aber so kommt eine fehlermeldung...:/
Da wäre die Frage immer: Was für eine Fehlermeldung kommt denn?

Generell solltest Du aber immer schauen, dass Du Dir den Algorithmus genau überlegst. Dazu brauchst Du noch keine Java Kenntnisse.

Du bekommst einen Zettel mit Zahlen.
Und es soll ein anderer Zettel mit Zahlen zurück gegeben werden. (Die Regeln lasse ich hier mal weg - die hast Du ja in der Aufgabe)

Und dann ist erst einmal die Frage: Wie kannst Du da vorgehen? Wie bekommst Du das hin?

Ich gebe Dir einen Zettel mit 1 7 1 1 1 7 7 1 1 1
Dann will ich von Dir einen Zettel zurück bekommen mit 1 7
Kriegst Du sowas hin? Wie?

Was kriege ich bei 1 3 3 7 7 3 1 1 1 3 1 7 7 7 zurück?
Beschreibe Dein Vorgehen.
 

Neue Themen


Zurück
Oben