0 Daumen
529 Aufrufe

Hallo Community,

ich muss die Java.awt.Color erweitern um CMYK zu RGB und umgekehrt umwandeln zu können.

Ich verstehe leider nicht wo mein Fehler liegt:

import java.awt.Color;

public class MyColor extends Color {
    private double w = 0;
    private double c, m, y, k = 0;

    public MyColor(int r, int g, int b) {
        super(r, g, b);

        this.w = (Math.max(Math.max(r, g), b)) / 255;

        this.c = (this.w - (r / 255)) / this.w;
        this.m = (this.w - (g / 255)) / this.w;
        this.y = (this.w - (b / 255)) / this.w;
        this.k = 1 - this.w;
    }
}

Ich hoffe ihr findet den Denkfehler bei mir. Ich bekomme eine IllegalArgumentException wenn ich von CMYK zu RGB umwandeln möchte.

Avatar von

1 Antwort

0 Daumen

Ich habe die Lösung selbst gefunden.

Der Fehler war dass ich die Berechnungen nicht im Konstruktor sondern in den getter-Methoden implementieren sollte und in dem Konstruktor nur die übergebenen Werte in den Instanzvariablen speicher, zum Beispiel:

....

    private double w = 0;
    private double r = 0;
    private double c = 0;

    public double getW() {
...
    }

    public double getC() {
        this.c = (getW()- (this.r / 255)) / getW();

        return this.c;
    }

    public MyColor(int r, int g, int b) {
        super(r, g, b);
       
        this.r = r;

...
    }

....

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community