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
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 =

 
Odpovědět
13.10.2017 9:38
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);
}
}
 
Odpovědět
28.11.2017 11:25
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 ;)

 
Odpovědět
28.11.2017 21:13
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.

 
Odpovědět
28.11.2017 21:35
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 :)

 
Odpovědět
29.11.2017 21:59
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);
}
}

 
Odpovědět
21.1.2018 19:44
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]){

 
Odpovědět
19.3.2018 9:11
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 20.3.2018 1:15
 
Odpovědět
20.3.2018 1:14
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.

 
Odpovědět
20.3.2018 7:28
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.

 
Odpovědět
6.4.2018 13:06
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.