NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Formát textu na písmena

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Samuel Šenigl:2.11.2017 20:14

Ahoj,

Není tu nějaká dobrá duše, která si udělala metodu která by mi z:

"Dnes jsem v pět hodin viděl dvacetčtyři holubic"

vrátila

"Dnes jsem v 5 hodin viděl 24 holubic"

a chtěla se podělit?

Popřípadě nevítě někdo jestli už někde takové řešení neexistuje?

Díky

 
Odpovědět
2.11.2017 20:14
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:2.11.2017 23:18

Tak teď trošku nevím, jestli to myslíš vážně nebo si děláš srandu....
Java pochopitelně nic takového nemá. Maximálně existuje nějaký date formating, který ale tuším jediné co převádí, tak dny v týdnu z názvu na čísla a zpátky, případně měsíc. Ale číslovky jako takové... Popravdě ani netuším, k čemu by něco takového bylo dobrého....
Když už bys to potřeboval, musel by sis všechno naťukat ručně.

import java.util.List;
import java.util.ArrayList;

public class Blbost {

    public static List<String> cislaVTextovePodobe = new ArrayList<>();

    private static void nastaveniCiselDoTextovePodoby() {
        cislaVTextovePodobe.add("jednu");
        cislaVTextovePodobe.add("dvě");
        cislaVTextovePodobe.add("tři");
        cislaVTextovePodobe.add("čtyři");
        cislaVTextovePodobe.add("pět");
        //do 24 ti to vypisovat nebudu, zapomeň!!!
    }

    public Blbost(String puvodniVeta) {
        String novaVeta = puvodniVeta;
        for (int i = 0; i < cislaVTextovePodobe.size(); i++) {
            if (puvodniVeta.contains(cislaVTextovePodobe.get(i))) {
                novaVeta = novaVeta.replace(cislaVTextovePodobe.get(i), String.valueOf(i + 1));
            }
        }
        System.out.println(novaVeta);
    }

    public static void main(String[] args) {
        nastaveniCiselDoTextovePodoby();
        Blbost blbost = new Blbost("Dnes jsem ve tři hodiny viděl pět holubic");
    }

}
Nahoru Odpovědět
2.11.2017 23:18
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:2.11.2017 23:23

Pochopitelně by tam mohlo být místo kolekce pole, čímž bys to sice jednodušeji vypsal na začátku, ale v případném rozšíření programu by se ti těžko s polem pracovalo (třeba kdybys měl metody, které by tento list rozšiřovaly a naopak)

Nahoru Odpovědět
2.11.2017 23:23
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Odpovídá na Lubor Pešek
Samuel Šenigl:3.11.2017 7:51

To by sice šlo, ale není to šťastnej způsob....pokud jsem viděl 6 453 236 holubic...tak by musel být kód celkem dlouhej

 
Nahoru Odpovědět
3.11.2017 7:51
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Samuel Šenigl
Lubor Pešek:3.11.2017 9:03

tak pochopitelně by se to dalo udělat objektově - pomocí metod.
Vzal bys to jako řetězec a jen bys to upodmínkoval.
Dal bys tam třeba podmínku, že pokud je velikost pole/kolekce větší než 4, tak první číslo bude mít přídavný text "tisíc" atd.
Problém nastává ve skloňování - v angličtině bys takový problém neměl.
V češtině máš jeden tisíc, dva tisíce atd. Kdysi jsem si toto skloňování nastavoval. vlastně existují vždy 3 způsoby skloňování. U 1 ( sto, tisíc, atd.) U 2 (stě tisíce). Tisíce by byly i společné pro 3 - 4 (sta, tisíce) a pak 5 - 9 máš stejné (set, tísíc) atd. atd. Určitě by to šlo zobecnit. To co jsem ti postnul, to bylo jedno z možných řešení. Všechno se dá vždy rozšiřovat. Nicméně je vážně tento problém v praxi vcelku na nic. Nikdy nic takového řešit nebudeš muset (je to čistě kosmetika, bez které se každý uživatel obejde).

Nahoru Odpovědět
3.11.2017 9:03
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.