Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. 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
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Odpovídá na Maroš Škumát
Jana Cibulková:13.10.2017 9:38

Aby to překládalo i písmeno a musí být if(index >=0){znak = mAbeceda[index];}
Chybí ti =

Avatar
Tereza Přibáňová:28.11.2017 11:25

Poradí mi někdo, jak to opravit? Začala sem se učit prográmko před cca týdnem a ať do toho zírám sebevíc, nevím, kde je to špatně (tuším že to for-loop? ...)

Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("zadejte zprávu k přeložení do Morzeovy abecedy: ");
        String zprava = sc.nextLine().toLowerCase().trim();
        String[] pismena_zpravy = zprava.split("");
        String nova_zprava = "";
        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[] morseovka = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
        "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
        "...-", ".--", "-..-", "-.--", "--.."};
        for (int j = 0; j< pismena_zpravy.length; j++){

        String morseuv_znak = "";
        for (int i = 0; i < abeceda.length; i++){
            int index = -1;
            if (abeceda[i].equals(pismena_zpravy[j])){
                index = i;
            }
            if (index >= 0){
            morseuv_znak = morseovka[index];
        }
            nova_zprava += morseuv_znak;
        }
    }
    System.out.println("Dekódovaná zpráva: \n" + nova_zprava);
}
}
Avatar
Odpovídá na Tereza Přibáňová
Tereza Přibáňová:28.11.2017 21:13

Tak už jsem na to přišla :D ... Nejradši bych to smazala, ale nechám to tu jako odstrašující případ ;)

Avatar
zitekv
Člen
Avatar
Odpovídá na Tereza Přibáňová
zitekv:28.11.2017 21:35

Ahoj,
pokud ti to nefunguje je dobré říci více o tom co nefunguje a co "reklamuješ".
Určitě to něco hlásí - a to je většinou zásadní pro hledání příčiny tzn. pokud se ptáš na problém je dobré přiložit chybové hlášení z IDE.

Avatar
Odpovídá na zitekv
Tereza Přibáňová:29.11.2017 21:59

Nic to nehlásilo, ale všechny znaky se vypsaly 26x ... Ale děkuju z upozornění, příště budu vědět :)

Avatar
MiroslavP
Člen
Avatar
MiroslavP:21.1.2018 19:44

Díky skvělému seriálu Java jsem opět objevil kouzlo programování. Děkuji MiP

Program dekoder Morse:
public class JavaApplication40 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System­.in,"Windows-1250");
Vzorové soubory znaků:
String[] abecedniZnaky = {"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[] morseSoubor = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."};
String oddelovac = " "; //oddělovač mezi Morse znaky (mezera)
//Morse zpráva k dekódování, jednotlive znaky jsou odděleny mezerou
String abecedniZprava = "ITNETWORK";
String kodovanaZprava = "";
int index = -1;
pořadí morse znaku v souboru v přépadě shody je rúzné od -1
int j = 0; //slouží pro iteraci v abecednim souboru
System.out.prin­tln("Kodér Morseovy abecedy");
System.out.prin­t("Zpráva k zakódování: ");
System.out.prin­tln(abecedniZ­prava);
//Rozdělení Abecední zprávy na jednotlivé Abecední znaky
String[] znaky = abecedniZprava­.split("");
int l = znaky.length;
for (int i=0; i < l; i++){
// System.out.prin­tln(znaky[i]);
}
//iterace Jednotlivých abecednich znaků a přiřazení příslušného Morse znaku
for (int i = 0; i < l ;i++){
while (index < 0){
if (znaky[i].equ­als(abecedniZ­naky[j]))
{
index = j;
kodovanaZprava = kodovanaZprava + String.format("%s%s",m­orseSoubor[in­dex],oddelovac);
}
else{
j++;
}
}
index = -1;
j = 0;
}
System.out.prin­tln("Kódovaná zpráva: " +kodovanaZprava);
}
}

Avatar
Moni
Člen
Avatar
Moni:19.3.2018 9:11

Když to udělám podobným způsobem tak mi to jede, ale já bych potřebovala jak převést char na string.
for(char aZnak : slova.toCharA­rray()){
for(int i=0;i< abeceda.length;i++){

if(aZnak == abeceda[i]){

Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Moni
pocitac770:20.3.2018 1:14

Pokud chceš String z takto více znaků, stačí klasicky "přičítat" char ke Stringu

String s = "";
//....
s += aZnak;

Pokud ale výslovně postřebuješ z jednoho charu String (což nedává v takovémto příkladu smysl), tak se jedná o

String s = String.valueOf(aZnak);
Editováno
Avatar
Moni
Člen
Avatar
Moni:20.3.2018 7:28

Jo, super, už to jede. Jedna se o předělání většího počtu prográmků a tak se mi to nechtělo celé rozkopávat. A tohle je nejjednodušší. Díky moc.

Avatar
Josef Pospíšil:6.4.2018 13:06

V článku je, že:

CompareTo()
Umožňuje porovnat dva řetězce podle abecedy. Vrací -1 pokud je první řetězec před řetězcem v parametru, 0 pokud jsou stejné a 1 pokud je za ním:

Ale já když to zkoušel, tak to háže jiné číslo a to v závislosti na tom jak daleko jsou abecedně od sebe. Takže -1 a 1 je to jen v případě, že se porovnávají slova, jejichž písmena abecedně sousedí jinak je tam třeba mezi "akát" a "kráva" -10.

Nejnovější komentáře jsou na konci poslední stránky.
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 128.