Wypisywanie liczb ze słownika

0

Witam:)

musze napisac program ktory w InputDialog pobiera liczby np 578
nastepnie wypisuje je pokolei pięć siedem osiem

jeszcze raz wpisujemy 578 a w MessageDialog : pięć, siedem, osiem.

Sklecilem cos takiego :


HashMap<String, Integer> phBook = new HashMap<String, Integer>();
        phBook.put("zero", new Integer(0));
        phBook.put("jeden", new Integer(1));
        phBook.put("dwa", new Integer(2));
        phBook.put("trzy", new Integer(3));
        phBook.put("cztery", new Integer(4));
        phBook.put("pięć", new Integer(5));
        phBook.put("sześć", new Integer(6));
        phBook.put("siedem", new Integer(7));
        phBook.put("osiem", new Integer(8));
        phBook.put("dziewięć", new Integer(9));

nie chce tego robić pętlą if... poza tym to działa tylko jak wpiszę jedną liczbę:) a chce żeby dzialalo także jak wpisze 54328743829 :)

Jakieś pomysły? musi być coś prostrzego ;-)

Dzieki za pomoc

0

Po pierwsze to wyglada na to ze zrobiles odwrotne mapowanie - kluczem powinna byc liczba, a wartoscia slowo. A w tym przypadku najlatwiej zeby char byl kluczem:
HashMap<Character, String> phBook = new HashMap<Character, String>();
phBook.put('0', "zero");
...

i teraz

StringBuilder sb = new StringBuilder();
String number = dialog.getText(); // whatever
for (int i = 0; i < number.length(); ++i) {
char c = number.charAt(i);
sb.append(phBook.get(c);
if (i < number.length() - 1) {
sb.append(", ");
}
}

Zakladam ze uzywasz autoboxingu, ale to nie problem skoro masz generici to masz i autoboxing. Brakuje obslugi bledow (jesli w dialog wpiszesz jakis znak ktory nie jest cyfra, mapa zwroci null i to zostanie doklejone do sb).

0

Mam coś takiego :

 String liczba = JOptionPane.showInputDialog("Podaj liczby");
        
        HashMap<Character, String> slownik = new HashMap<Character, String>();
        slownik.put('0', "zero");
        slownik.put('1', "jeden");
        slownik.put('2', "dwa");
        slownik.put('3', "trzy");
        slownik.put('4', "cztery");
        slownik.put('5', "pięć");
        slownik.put('6', "sześć");
        slownik.put('7', "siedem");
        slownik.put('8', "osiem");
        slownik.put('9', "dzwiewięć");
        
        
        
        StringBuilder sb = new StringBuilder();
        String number = liczba.getText(); // whatever
        for (int i = 0; i < number.length(); ++i) {
            char c = number.charAt(i);
            sb.append(slownik.get(c));
            if (i < number.length() - 1) {
                sb.append(", ");
            }
        }

getText : cannot find symbol. ://

Potrzebowalbym zeby pobieral liczbe typu int, po przeparsowaniu to nie dziala:/
Aha jak wypisany wynik pobrać z tej pętli i wypisać w showMessageDialog?

dziex

0

Powiedz ze to zart. Przeciez zmienna liczba jest juz String, wiec nie wywoluj zadnego getText - ja to napisalem bo nie wiedzialem jak ty pobierac tekst wpisany przez usera!
Pobrany wynik mozesz usyskac w postaci String wywylujac sb.toString(). Dalej juz masz obiekt String z ktorym (mam nadzieje) juz wiesz co zrobic?

0

aż tak cienko że uważasz, że to żart :d

finalnie wygląda to tak :


StringBuilder sb = new StringBuilder();
        String number = liczba; // whatever
        for (int i = 0; i < number.length(); ++i) {
            char c = number.charAt(i);
            sb.append(slownik.get(c));
            if (i < number.length() - 1) {
                sb.append(", ");
            }
        }

        String toString = sb.toString();
        JOptionPane.showMessageDialog(null,sb); 

śmiga aż miło
Dzięki za pomoc :) [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1