Aleksander Lech

Aleksander Lech Architekt rozwiązań

Temat: Kwota słownie - potrzebna klaska

Witam,

Macie gdzieś pod ręką jakąś klasę bądź bibliotekę umożliwiającą generowanie Stringa zawierającego słowną wersję pewnej pieniężnej kwoty (double/float)? Nie chciałbym tu wynajdować koła od nowa:) Dzięki...

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Kiedyś coś takiego popełniłem:

http://javablog.wawer.org/download/number2text/NumberT...
Przemysław Wardowski

Przemysław Wardowski Technology driven HR
solutions / CTO w IT
Systems sp. z o.o.

Temat: Kwota słownie - potrzebna klaska

Cześć,

http://www.goldenline.pl/forum/java/977080

Pozdrawiam
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Kwota słownie - potrzebna klaska

Dariusz Wawer:
Kiedyś coś takiego popełniłem:

btw:
Nie byłoby bardziej "obiektowo", gdyby np.:
static final String[] cyfry = {"zero", "jeden", "dwa", "trzy", "cztery", "pięć",
"sześć", "siedem", "osiem", "dziewięć"};

... zamienić Javovym enum-em, np.:
enum Cyfry
{
zero
, jeden
, dwa
, trzy
, cztery
, pięć
, sześć
, siedem
, osiem
, dziewięć
}

...? ;)

Pozdrawiam,
Adam Woźniak

PS.
[już pisząc poważniej]
Tak, jestem enum-owym ortodoksem ;]
Ortodoksyjnie enumów używam nawet (na przykład) w Hibernate. I bardzo sobie to chwalę :)Adam Woźniak edytował(a) ten post dnia 09.11.09 o godzinie 19:17
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: Kwota słownie - potrzebna klaska

Był podobny wątek niespecjalnie dawno temu:
http://www.goldenline.pl/forum/java/977080

ja używam jednej z podanych w tym wątku:
http://jdn.pl/files/NumberSpeaker.java

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Adam Woźniak:
Dariusz Wawer:
Kiedyś coś takiego popełniłem:

btw:
Nie byłoby bardziej "obiektowo", gdyby np.:
static final String[] cyfry = {"zero", "jeden", "dwa", "trzy", "cztery", "pięć", "sześć", "siedem", "osiem", "dziewięć"};

... zamienić Javovym enum-em, np.:
enum Cyfry
{
zero
, jeden
, dwa
, trzy
, cztery
, pięć
, sześć
, siedem
, osiem
, dziewięć
}
Tak, jestem enum-owym ortodoksem ;]

Też bardzo lubię enumy. Ale nie napisałbym go w ten sposób, polskie znaki w nazwach... Musiałbym zrobić
enum Cyfra {
JEDEN("jeden"),
...
DZIEWIEC("dziewięć");
String nazwa;
private Cyfra(String nazwa) {
this.nazwa = nazwa;
}

public String nazwa() {
return nazwa;
}
}

A to z kolei już przerost formy nad treścią... Druga rzecz, że tablicę jakoś łatwiej zmodyfikować na np. język angielski. I dziwnie wyglądałyby enumy z polskimi nazwami i angielskimi słowami jako wartościami...
Aleksander Lech

Aleksander Lech Architekt rozwiązań

Temat: Kwota słownie - potrzebna klaska

Dzięki wszystkim za pomoc. Co do toczącej się tutaj dyskusji na temat które podejście jest lepsze w tym przypadku stanąłbym po środku. Też jestem wielkim enumów aczkolwiek w tym wypadku może rzeczywiście są niepotrzebne jeżeli traktujemy tą klasę jako pewnego rodzaju czarną skrzynkę (klasę użytkową która ma po prostu działać) to rzeczywiście nie ma co jej teraz refaktoryzować:) Pozdr

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Znalazłem kiedyś kod w PHP i przerobiłem go, niestety już nie mam dostępu do kodu tego projektu.
Co do enumów to pomijając wyjątkowe przypadki są najgorszym co może być, lepiej korzystać z normalnych tablic, przynajmniej można je podmienić bez rekompilacji programu.
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Kwota słownie - potrzebna klaska

Łukasz Lech:
[..]
Co do enumów to pomijając wyjątkowe przypadki są najgorszym co może być, lepiej korzystać z normalnych tablic, przynajmniej można je podmienić bez rekompilacji programu.

No to jak - zaczynamy flamewar nt. enumów? ;]


Obrazek


Pewne stałem w systemie są niezmienne przez całe życie aplikacji (immutable). Nie widzę powodów, aby w takich sytuacjach używać enumów.

Np.:

enum Zwierzaki
{
gad
, ptak
, ssak
}


Później w kodzie, jeśli mama jakieś odwołanie np. do gada: Zwierzaki.gad, to wtedy środowisko IDE jest mi w stanie wyszukać miejsca, gdzie do gada odwołuje się explicite.
Przy użyciu tablic zamiast enumów, takich odwołań nie jesteśmy w stanie automatycznie wyszukać.

Poza tym - mając enumy, mamy lepszą kontrolę typów, bo bezpieczniejszy jest zapis:

void foo(Zwierzaki zwierz)

... niż:
void foo(String zwierz)

To tak pokrótce ;]

Pozdrawiam, Adam

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Łukasz Lech:
Znalazłem kiedyś kod w PHP i przerobiłem go, niestety już nie
mam dostępu do kodu tego projektu.

... "czyli równie dobrze mogłem się nie wypowiadać, ale i tak to zrobiłem".
Łukasz Lech:
Co do enumów to pomijając wyjątkowe przypadki są najgorszym co
może być, lepiej korzystać z normalnych tablic, przynajmniej można je podmienić bez rekompilacji programu.

Zupełnie nie rozumiem tej wypowiedzi. Enumy mogą zawierać dowolną ilość zmiennych, które nie muszą być finalne. W praktyce działają jak obiekty, ba, mogą nawet implementować interfejsy! Polecam zapoznać się z tutorialem dotyczacym enumów.

Wybór pomiędzy użyciem Enuma a zmiennej jest często oczywisty - ale zdarzają się też sytuacje kiedy nie robi to wielkiej różnicy. Słowem, jak zwykle wszystko zależy od programisty.

Mam nadzieję, że, jeśli ta dyskusja się rozwinie, będą przytaczane jakieś rozsądne argumenty. Jak tak dalej pójdzie rzeczywiście będzie flame war...

//edit: nie, wcale nie dolewam oliwy do ognia;)Dariusz Wawer edytował(a) ten post dnia 19.11.09 o godzinie 23:07

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Dariusz Wawer:
Łukasz Lech:
Znalazłem kiedyś kod w PHP i przerobiłem go, niestety już nie
mam dostępu do kodu tego projektu.

... "czyli równie dobrze mogłem się nie wypowiadać, ale i tak to zrobiłem".

Nie, po prostu nie podałem gotowej odpowiedzi na tacy tylko na nią naprowadziłem.
Taca jest tutaj:
Google -> PHP kwota słownie
Łukasz Lech:
Co do enumów to pomijając wyjątkowe przypadki są najgorszym co
może być, lepiej korzystać z normalnych tablic, przynajmniej można je podmienić bez rekompilacji programu.

Zupełnie nie rozumiem tej wypowiedzi. Enumy mogą zawierać dowolną ilość zmiennych, które nie muszą być finalne. W praktyce działają jak obiekty, ba, mogą nawet implementować interfejsy! Polecam zapoznać się z tutorialem dotyczacym enumów.
Już od dawna nie zachwycam się tutorialami.
Po co mi implementacja jakiegoś interfejsu skoro nie mogę zmienić tekstu bez rekompilacji kodu ;)
Polecam z doświadczenia rozwiązania, które są lepsze. Jeśli nie chcesz korzystać, nie musisz ;)

konto usunięte

Temat: Kwota słownie - potrzebna klaska

ojej zmiana tekstu (label-a ?) a enumy... Za przeproszeniem, co ma piernik do wiatraka ? Co ma wspolnego embeddowanie labeli w aplikacji a wyciaganie ich do plikow zewnetrznych w kontekscie enumow czy tablicy ?

konto usunięte

Temat: Kwota słownie - potrzebna klaska

Łukasz Lech:
Co do enumów to pomijając wyjątkowe przypadki są najgorszym co
może być, lepiej korzystać z normalnych tablic, przynajmniej można je podmienić bez rekompilacji programu.

Zupełnie nie rozumiem tej wypowiedzi. Enumy mogą zawierać dowolną ilość zmiennych, które nie muszą być finalne. W praktyce działają jak obiekty, ba, mogą nawet implementować interfejsy! Polecam zapoznać się z tutorialem dotyczacym enumów.
Już od dawna nie zachwycam się tutorialami.
Po co mi implementacja jakiegoś interfejsu skoro nie mogę zmienić tekstu bez rekompilacji kodu ;)

Poniżej kod przykładowego enuma z mojego projektu, żebyśmy nie gadali po próżnicy:

public enum DrawPriorities {
CRITTER(10), BACKGROUND(-10), TOWER(5), BULLET(20), FIRE_DAMAGE(15), ICE_DAMAGE(14);

private DrawPriorities(int value) {
this.value = value;
}

public int value;
public static void main(String[] args) {
DrawPriorities pr = DrawPriorities.BULLET;
System.out.println("wartość przed zmianą: "+pr.value);
pr.value = 11;
System.out.println("wartość po zmianie: "+pr.value);
}
}


enum ten ma zmianną value, którą mogę dowolnie zmieniać w trakcie wykonywania programu.
Gdyby tą zmienną był String, także spokojnie mógłbym go zmienić. Ta zmiana nie wymagałaby rekompilacji kodu.

Tutoriale są przydatne dla tych, którzy muszą zapoznać się z pewnymi mechanizmami i współczuję Ci, jeśli z nich nie korzystasz. Jeśli się czegoś nie wie, a najwyraźniej tak jest, naprawdę warto to zrobić.
Łukasz Lech:
Polecam z doświadczenia rozwiązania, które są lepsze. Jeśli nie chcesz korzystać, nie musisz ;)

Jestem naprawdę pod wrażeniem próżności, która przez Ciebie przemawia. Ty twierdzisz, że coś jest lepsze, więc po prostu jest lepsze.

Następna dyskusja:

Java, potrzebna pomoc w War...




Wyślij zaproszenie do