NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Java string() - dotaz

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

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Enigma
Člen
Avatar
Enigma:16.4.2021 16:30

Dobrý den, chci poradit ohledně jednoho programu:
Vytvářím program s pomocí String() příkazů, na vstupu uživatel zadá textový řetězec (větu), poté zadá určité slovo nebo část slova, co chce vyhledat a program vypíše kolikrát se v dané větě(řetězci) vyskytuje hledaný výraz.
Už jsem zkoušel tento program vytvořit, ale z nějakého důvodu to nefunguje a já už si nevím rady.
S řetězci dělám asi necelý měsíc, proto ještě nejsem až tak zkušený.
Předem děkuji za odpověd.

Zkusil jsem: import java.util.Scanner;

public class StringCviceni4 {

public static void main(String args[]) {

String s1,s2;
Scanner sc= new Scanner(System.in);
System.out.prin­tln("Zadejte retezec:");
s1 = sc.nextLine();
System.out.prin­tln("Zadejte, co chcete najit:");
s2 = sc.nextLine();
int počet=0;
for (int j=0;j<s1.length();j++)
{
for (int k=0;k<s2.length();k++)
{
if(s2.charAt(k)==s1­.charAt(j)){
k++;
j++;
}
else
{
k=0;
for (int g=j;g<s1.length();g++)
{
if(s1.charAt(g)==' ')
{
j=g+1;
break;
}
if(g==s1.length()-1){
k=s2.length()+10;
j=s1.length()+10;
}
}
if(k==s2.length())
počet++;
}
}
System.out.prin­tln("cislo je: " + počet);
}
}
}

 
Odpovědět
16.4.2021 16:30
Avatar
Odpovídá na Enigma
Matúš Olejník:16.4.2021 17:43

Ahoj, hádam, že keď už mesiac robíte so Stringami tak ste preberali aj metódy ako indexOf, subString, length atď.

//todo kontrola na null alebo prazdne Stringy
public static int getSubstringOccurrenceCount(String stringWhereSearch, String stringWhatSearch){
    int count = 0;
    int offset = 0;

    while(true){
        offset = stringWhereSearch.indexOf(stringWhatSearch, offset);

        if(offset == -1){
            break;
        }

        count++;
        offset += stringWhatSearch.length();
    }
    return count;
}

Tebe bude stačiť zavolať

System.out.println(getSubstringOccurrenceCount(s1, s2));

V podstate len skracuješ danú vetu v ktorej hľadáš od toho indexu ktorý ti vráti metóda indexOf + dĺžka toho stringu ktorý hľadáš.

java.lang.String
public int indexOf(String str,
int fromIndex)
Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
The returned index is the smallest value k for which:
k >= fromIndex && this.startsWit­h(str, k)

If no such value of k exists, then -1 is returned.
Parameters:
str - the substring to search for.
fromIndex - the index from which to start the search.
Returns:
the index of the first occurrence of the specified substring, starting at the specified index, or -1 if there is no such occurrence.

Nahoru Odpovědět
16.4.2021 17:43
/* I am not sure why this works but it fixes the problem */
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 2 zpráv z 2.