Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 15. diel - Textové reťazce v Jave do tretice - Split a join

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3.12.2015 12:32

a jak bys chtěl aby to fungovalo?

Odpovedať
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
roman64
Tvůrce
Avatar
Odpovedá na Tomas Hlinovsky
roman64:3.12.2015 16:46

Ahoj. Možná tito bude jasnější s touto iterací:

public static void main(String[] args) {
        String retez = "Ahoj jak se máš?";
        int i;
        for (i=0; i<retez.length();i++)
            System.out.println(retez.substring(0,i));
    }
Odpovedať
Definice šílenství je dělat stejnou věc znovu a znovu a očekávat jiné výsledky.“ Albert Einstein.
Avatar
Tomáš Kamlar:6.12.2015 16:32

moje verze pro opětovné zakodování zprávy do Moseovy abecedy :)

String zprava2 = "";

       for (char abecedniZnak : zprava.toCharArray())
        {
           int index = -1;
           String znak = " ";
            for (int i = 0; i < abecedniZnaky.length(); i++)
                {
                    if (abecedniZnaky.charAt(i) == abecedniZnak)
                        {
                        index = i;
                        }
                }
            if (index >=0)
                {
                    znak = morseovyZnaky[index];
                }
            zprava2 += znak + " ";
        }
       System.out.printf("Znovu zakodovaná zpráva: %s\n", zprava2);
Avatar
Miroslav Bejlek:14.9.2016 17:15

Ahoj,
mám dotaz pro spojování řetězců mohu použít buď plus nebo příkaz concat().
String s1, s2, s3;
s3 = s1 + s2; nebo
s3 = s1.concat(s2)

dotaz mám v čem je rozdíl, podle mne je to stejné, pak nechápu proč tu speciální metodu vůbec zaváděli, tak si říkám, že asi nějaký rozdíl v tom bude, prosím řekněte mi jaký :-)

Děkuji :-)

Avatar
Dalibor Kužma:24.11.2016 19:59

viete mi povedať prečo môj prekladač koktá? Tu je kód:

Scanner sc = new Scanner (System.in, "Windows-1250");
        System.out.println("Vitajte v prekladači do Morseovky!");
        System.out.println("Vložte text na preklad:");
        String s = sc.nextLine();
        String preklad = "";
        String[] abeceda = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        String[] mAbeceda = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."};
        String[] text = s.split("");
        for ( String aZnak : text){
            String mZnak = "?";
            int index = -1;
            for (int i =0; i < abeceda.length; i++){
                if (abeceda[i].equals(aZnak)){
                    index = i;
                }
            if (index >= 0){
                mZnak = mAbeceda[index];
            }
            preklad += mZnak + " ";
            }

        }
        System.out.printf("Preložený text je: \n %s\n", preklad);
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Dalibor Kužma
pocitac770:24.11.2016 21:59

Chyba je v této části kódu, zkus nad tím zapřemýšlet ;)

for (int i =0; i < abeceda.length; i++){
        if (abeceda[i].equals(aZnak)){
                index = i;
        }
        if (index >= 0){
                mZnak = mAbeceda[index];
        }
        preklad += mZnak + " ";
}
Avatar
Odpovedá na pocitac770
Dalibor Kužma:25.11.2016 22:06

pocitac770 Ďakujem prišiel som na to. Problém bol v zátvorke :).

Avatar
gcx11
Tvůrce
Avatar
gcx11:26.4.2017 22:14

Doplnil bych, že metoda split nebere jako parametr řetězec, ale regulární výraz.

Například rozdělení řetěžce na věty podle tečky nebude fungovat:

String text = "Dobrý den. Jmenuje se Jan Novák a učím se Javu. Docela mi to jde.";
String[] parts = text.split(".");
for (String s: parts){
      System.out.println(s);
 }

Napřed se musí upravit řetězec, aby nebyl brán jako regulární výraz:

String text = "Dobrý den. Jmenuje se Jan Novák a učím se Javu. Docela mi to jde.";
String[] parts = text.split(Pattern.quote("."));
for (String s: parts){
      System.out.println(s);
 }

Třída Pattern je z balíčku java.util.regex

Editované
Avatar
Radka Jánská:14.9.2017 23:56

Tak musím říci, že dekoder morseovky se povedl, ale seděla jsem u toho 2 hodiny čistého času! Zítra si to musím porovnat s Vaším řešením. Ze začátku jsem se zacyklila na tom, že jsem opět chtěla bezmyšlenkovitě použít metodu split() - kdo by se nad tím v deset večer zamýšlel ... teprve postupnou analýzou mi došlo, že nemám potřebný separátor a vzpomněla jsem si ze starších tutoriálů na metodu toCharArray() ... pak jen vybojovat porovnávání znaků ... nefunguje equals, ale operátor == (pomohl strýček google) a řešení je na světě :-) děkuji za tohle mozkové cvičení, nevím, jestli jsem našla nejelegantnější řešení, ale hlavně, že jsem ho našla :-)

Avatar
Maroš Škumát:12.10.2017 20:56

Neviete mi niekto povedať kde mám chybu ?

Scanner sc = new Scanner(System.in,"Windows-1250");
        System.out.println("Zvoľte si operáciu");
        System.out.println("1 - preklad do morseovej abecedy");
        System.out.println("2 - preklad z morseovej abecedy");
        byte voľba = Byte.parseByte(sc.nextLine());
        String[] abeceda = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        String[] mAbeceda = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
        "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
        "...-", ".--", "-..-", "-.--", "--.."};
        String sprava = "";
        String znak = "";
        int index = -1;
        switch(voľba)
        {
            case 1:
                System.out.println("Napíšte správu na preloženie: ");
                String preklad1 = sc.nextLine();
                preklad1 = preklad1.trim();
                preklad1 = preklad1.toLowerCase();
                String[] Preklad = preklad1.split("");
                for(String preklad : Preklad)
                {
                    for(int i = 0; i < abeceda.length; i++)
                    {
                        if(abeceda[i].equals(preklad))
                        {
                            index = i;
                        }
                        if(index > 0)
                        {
                        znak = mAbeceda[index];
                        }
                        }
                sprava += znak;
                }
                System.out.println("Dekódovaná správa: " + sprava);
                break;
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 127.