
retezec
AHojte,prosim Vas vedel by mi nekdo pomoct s programem v Java netBeans...mam zadat retezec a zistit kolik krat se v nem nachazi dalsi retezec...mam to,jen nevim jak na to aby mi tozistilo treba ze tam je 3x..furt mi haze jenom 1x...nekdo help ?
A co už máš hotovo?
public static void main(String[] args) {
String r1 = JOptionPane.showInputDialog("Zadaj retezec");
System.out.println(r1);
String r2 = JOptionPane.showInputDialog("Zadaj retezec ktery chceš vyhledat");
int dlzka = r1.length();
int pocet = 0;
for (int i = 0;i<dlzka;i++) {
String znak = r1.substring(i,i+1);
if ( r2.equals(znak)) pocet++;
}
System.out.println("Zadany retezec se v textu nachazi " + pocet + " krát");
}
}
Tak to je celé špatně. Porovnáváš hledaný řetězec vždy jenom s jedním znakem, což samozřejmě nebude nikdy fungovat, když ten hledaný řetězec bude mít více znaků.
Použij třeba tohle: http://docs.oracle.com/javase/7/docs/api/java/lang /String.html#indexOf(java.lang.String,%20int)
napada me jedine ze bych tam pouzil to regionMatches...ale nevim jak to zapsat do javy
Proč bys měl používat regionMatches, když jsem ti dal odkaz na indexOf?
Potrebuješ presne ten indexOf, a cyklus do while, budeš cykliť pokým ti indexOf vráti nenulovú hodnotu, a hľadanie zakaždým posunieš na pozíciu za práve nájdený výskyt.
Přesněji jinou hodnotu než -1. Nulová hodnota znamená, že to bylo nalezeno na první pozici.
Niečo treba nechať aj na autora. To sú detaily, ktoré sa líšia v rôznych jazykoch, ale poväčšine je tá nula ako začiatok, áno.
Na pochopenie snáď bude stačiť...