Hallo Leute,
habe bei meinen Hausaufgaben 2 Probleme, aber vorher beschreibe ich mla die Aufgabenstellung:
Es geht um statische Methoden.
Ich habe die RGB-Werte für Farben die von 0 - 255 gehen.
Um alle Farben mischen zu können braucht man also rot,grün und blau.
Also hätten wir das Format 255,255,255, da wir aber nur elementare Datentyoen kennengelernt haben müssen wir es als ganze Zahl im Format rrrgggbbb repräsentieren und führende Nullen müssen weggelassen werden.
Beispiele:
255000000 = (255,0,0)
205030007 = (205,30,7)
20080 = (0,20,80)
0 = (0,0,0)
Dann soll ich eine Methoden schreiben um die Farben zu invertieren. Beispiele:
(0,0,0) = (255,255,255)
(10,128,255) = (245,127,0)
Damit habe ich keine Probleme.
Bei der nächsten Aufgabe soll man die nächste Farbe zu einer Farbe bestimmen also +1 draufrechnen.
Beispiele:
(10,11,12) = (10,11,13)
(10,128,255) = (10,129,0)
Mein Problem ist das ich es nicht hinkriegen die führenden Nullen weg und bei einem Ergebnis zeigt er mir was falsches an und ich finden nicht den Fehler. Hier mal meine Fälle die eintreffen müssen:
Farbe (0,0,0) invertieren zu (255,255,255)
Farbe (10,128,255) invertieren zu (10,128,255) = (245,127,0)
nächste Farbe zu (10,11,12) berechnen = (10,11,13)
nächste Farbe zu (10,128,255) berechnen = (10,129,0)
nächste Farbe zu (0,255,255) berechnen = (1,0,0) (Hier kriege ich das falsche Ergebnis)
nächste Farbe zu (255,255,255) berechnen = (0,0,0) (Hier kriege ichnur 0 raus, muss aber 0,0,0 sein)
Ansonsten hier bisher meine Arbeit, wäre über jede Hilfe dankbar. Und mir ist gerade noch ein weiteres Problem aufgefallen, ich kann nicht
zu 010128255 machen wie es seien sollte dann zeigt er mir an integer number too large.
habe bei meinen Hausaufgaben 2 Probleme, aber vorher beschreibe ich mla die Aufgabenstellung:
Es geht um statische Methoden.
Ich habe die RGB-Werte für Farben die von 0 - 255 gehen.
Um alle Farben mischen zu können braucht man also rot,grün und blau.
Also hätten wir das Format 255,255,255, da wir aber nur elementare Datentyoen kennengelernt haben müssen wir es als ganze Zahl im Format rrrgggbbb repräsentieren und führende Nullen müssen weggelassen werden.
Beispiele:
255000000 = (255,0,0)
205030007 = (205,30,7)
20080 = (0,20,80)
0 = (0,0,0)
Dann soll ich eine Methoden schreiben um die Farben zu invertieren. Beispiele:
(0,0,0) = (255,255,255)
(10,128,255) = (245,127,0)
Damit habe ich keine Probleme.
Bei der nächsten Aufgabe soll man die nächste Farbe zu einer Farbe bestimmen also +1 draufrechnen.
Beispiele:
(10,11,12) = (10,11,13)
(10,128,255) = (10,129,0)
Mein Problem ist das ich es nicht hinkriegen die führenden Nullen weg und bei einem Ergebnis zeigt er mir was falsches an und ich finden nicht den Fehler. Hier mal meine Fälle die eintreffen müssen:
Farbe (0,0,0) invertieren zu (255,255,255)
Farbe (10,128,255) invertieren zu (10,128,255) = (245,127,0)
nächste Farbe zu (10,11,12) berechnen = (10,11,13)
nächste Farbe zu (10,128,255) berechnen = (10,129,0)
nächste Farbe zu (0,255,255) berechnen = (1,0,0) (Hier kriege ich das falsche Ergebnis)
nächste Farbe zu (255,255,255) berechnen = (0,0,0) (Hier kriege ichnur 0 raus, muss aber 0,0,0 sein)
Ansonsten hier bisher meine Arbeit, wäre über jede Hilfe dankbar. Und mir ist gerade noch ein weiteres Problem aufgefallen, ich kann nicht
Java:
System.out.println(gibNaechsteFarbe(10128255));
Java:
public class Farben {
/**
* Testet die Ausgabe der "invertiere" Metode.
* @param args wird nicht verwendet
*/
public static void main(String[] args) {
System.out.println(invertiere(000000000));
System.out.println(invertiere(10128255));
System.out.println(gibNaechsteFarbe(10011012));
System.out.println(gibNaechsteFarbe(10128255));
System.out.println(gibNaechsteFarbe(000255255));
System.out.println(gibNaechsteFarbe(255255255));
}
public static int invertiere(int rgbColor) {
/* Maximalwert abziehen vom Istwert*/
return 255255255 - rgbColor;
}
public static int gibNaechsteFarbe(int rgbColor){
/* rrr.gggbbb = rrrgggbbb / 100000 */
int red = rgbColor / 1000000;
/* rrrggg.bbb - rrr000 = ggg */
int green = rgbColor / 1000 - red * 1000;
/* rrrgggbbb - rrr000000 - ggg000 = bbb */
int blue = rgbColor - red * 1000000 - green * 1000;
/* Hier werden die Farben +1 hochgezählt für die nächste Farbe*/
/* (bbb + 1) z.B. 120 wird zu 121 bbb*/
int nextBlue = blue + 1;
/* Wenn blue 255 erreicht hat wird green +1 gezählt*/
int nextGreen = (nextBlue < 256) ? green : green + 1;
/* Wenn grün 255 erreicht hat wird red +1 gezählt*/
int nextRed = (nextGreen < 256) ? red : red + 1;
/* Überlauf bei der 256 muss zu 0 gesetz werden*/
nextGreen = (nextGreen < 256) ? nextGreen : 0;
nextBlue = (nextBlue < 256) ? nextBlue : 0;
nextRed = (nextRed < 256) ? nextRed : 0;
/* Rechnet ale Farbenwerte zusammen auf 9 Stellen */
return nextRed * 1000000 + nextGreen * 1000 + nextBlue;
}
}
Zuletzt bearbeitet: