• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Agregowanie kolekcji

0 głosów
289 wizyt
pytanie zadane 14 marca 2021 w Java przez amtrax Dyskutant (9,630 p.)

Cześć, 

na potrzeby pewnego zadania tworzę konwerter  RGB to HEX  w poleceniu obowiązuje kilka zasad:

  • Przyjmowane są wartości od 0-255 jeżeli któraś nie jest w tym zakresie, powinna być zaokrąglona do najbliższej granicy
  • Wynik powinien mieć zawsze 6 znaków, jeżeli któraś wartość ma mniej, należy dopisać przed nią 0 

Do tego celu używam funkcji przetwarzających kolekcję, cały kod napisany jest w Kotlinie, jednak jest prawie identyczny jak w Javie. 
Na początku  przetwarzam liczby na wartości szesnastkowe, następnie za pomocą funkcji reduce mierzę długości stringów, jeżeli trzeba to dopisuje 0. 

W tej części występuje problem: funkcja działa prawidłowo jeżeli 0 trzeba dopisać w innym miejscu niż na początku. W przypadku wartości np: 

 

rgb(11, 11, 11)

funkcja powinna zwrócić:

0B0B0B

a zwraca:

B0B0B

Cały kod:

fun rgb(r: Int, g: Int, b: Int) : String{

return intArrayOf(r,g,b).map { if(it < 0) Integer.toHexString(0) else if(it > 255) Integer.toHexString(255) else Integer.toHexString(it)}
        .reduce{acc,element -> if(element.length < 2) acc+"0"+element else acc+element.toString()}.toUpperCase())

    
}

PS. 

na forum brakuje kategorii Kotlin

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 526 wizyt
pytanie zadane 19 lutego 2019 w Java przez must Bywalec (2,980 p.)
0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 2 marca 2018 w Java przez Marek Bojdys Nowicjusz (150 p.)

93,778 zapytań

142,737 odpowiedzi

323,390 komentarzy

63,382 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...