NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 15 - Textové řetězce v Javě do třetice - Split a join

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3.12.2015 12:32

a jak bys chtěl aby to fungovalo?

Odpovědět
3.12.2015 12:32
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
Odpovídá 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));
    }
Odpovědět
3.12.2015 16:46
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);
 
Odpovědět
6.12.2015 16:32
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 :-)

 
Odpovědět
14.9.2016 17:15
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);
 
Odpovědět
24.11.2016 19:59
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá 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 + " ";
}
 
Odpovědět
24.11.2016 21:59
Avatar
Odpovídá na pocitac770
Dalibor Kužma:25.11.2016 22:06

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

 
Odpovědět
25.11.2016 22:06
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

Editováno 26.4.2017 22:15
 
Odpovědět
26.4.2017 22:14
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 :-)

 
Odpovědět
14.9.2017 23:56
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;
 
Odpovědět
12.10.2017 20:56
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 10 zpráv z 122.