Convertitore da RGB a CMYK in Java senza importazioni


Ho il compito di scrivere un convertitore da rgb a cmyk molto semplice in java e i miei tentativi non funzionano. Cercare soluzioni non ha aiutato, dal momento che tutti usano libaries e importazioni che non posso usare qui. Spero che qualcuno veda il mio errore.

int w;
    int c;
    int m;
    int y;
    int k;

    if (r+b+g==0) {
        System.out.println("Ist alles 0");
    } else {
        int max =  Math.max(Math.max(r,b),g);
        w = (max / 255);

        r = r/255;
        g = g/255;
        b = b/255;

        c = ((w-r)/w);
        m = ((w-g)/w);
        y = ((w-b)/w);
        k = 1-w;
        System.out.println(c+" "+m+" "+y+" "+k);
    }

Questa è la parte in cui provo a convertire i valori r, g e b (int) che ottengo tramite l'input dell'utente in cmyk.

Edit: so che ci sono post come questi, ma le soluzioni includono sempre libari e importazioni che NON sono autorizzato a usare.

Author: Kendel Ventonda, 2016-11-01

1 answers

Il codice seguente memorizzerà zero in r poiché il valore iniziale di r è inferiore a 255 e r è un int. Quindi, come per la divisione intera r/255 sarà zero.

r = r/255;

Invece puoi memorizzare il risultato della divisione in una variabile doppia, prova il seguente (assicurati che almeno uno degli operando nella divisione sia un doppio, altrimenti puoi lanciarlo a doppio)

double rC = r/255.0;
c = ((w-rC)/w);
 1
Author: Jos Angel George, 2016-11-01 16:01:51