Výskyt znakov vo vete – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výskyt znakov vo vete – Java – Fórum – Programujte.comVýskyt znakov vo vete – Java – Fórum – Programujte.com

 

Anonym
~ Anonymní uživatel
454 příspěvků
19. 2. 2015   #1
-
0
-

Ahojte, mám taký menší problém, s ktorým si akosi neviem rady.

Mám kód:

        try{
            FileReader fR = new FileReader("text.txt");
            BufferedReader subor = new BufferedReader(fR);
            do {
               riadok = subor.readLine();
               if(riadok != null){
                   text += riadok + "\n";
                   znaky = riadok.length();
                   z = z + znaky;
                  

               }                   
                }while (riadok != null);
            subor.close();
        } catch (IOException e) {
            System.out.println(e.toString());
    }

Týmto prehliadam texťák po riadkoch v cykluse. Neviem, možno mi to nemyslí, alebo neviem ako to použiť, ale potrebujem spraviť to, aby ak je v jednej vete (viaceré na riadku) našlo hľadaný výraz aj viackrát tak aby sa to zarátalo. 

Tzn. potrebujem nájsť všetky výskyty hľadaného slova v celom textovom dokumente. Dával som to do cyklu, ktorý tam mám, použil som riadok.contains, ale to zbieha len na jeden riadok, tzn. ak sa tam nachádza výraz viackrát, započíta sa len jeden.

Ďakujem za pomoc, určite to nebude nič náročné, ale akosi na to neviem prísť, s Javou sa len učím :)

Nahlásit jako SPAM
IP: 95.105.210.–
NotBeginner
~ Anonymní uživatel
185 příspěvků
20. 2. 2015   #2
-
0
-

Tak znaky nebo výraz? Je pochopitelné když si nedokážeš definovat zadání nemůžeš dospět k výsledku.

Nahlásit jako SPAM
IP: 217.112.161.–
ondrej39+1
Věrný člen
20. 2. 2015   #3
-
0
-

#1 Anonym
Úplně ti tam chybí podmínka Když bude procházený řetězec stejný jako řetězec hledaný, tak ho započítej, jinak se posuň dál.

Většinou pro vyřešení takových základních věcí se stačí zamyslet nad tím, co ti má algoritmus dělat. Ty budeš mít string znaků, jeden řádek a dejme tomu, že budeš chtít, našel řetězec o délce 5 znaků (třeba výraz "kocka").

Úplně nejsazší způsob je načíst si daný řádek z textového dokumentu do pole a začít porovnávat znak po znaku. V Javě neprogramuji, nicméně algoritmy budou v různých jazycích vypadat hodně podobně, jde jen o to přepsat syntaxi. Tenhle algoritmus ti ve vloženém řetězci najde řetězec, který hledáš, v C++:

int najdi_retezec(const string& proch, const string& hledany)
{
	int pocet = 0;
	int delka = hledany.length();

	for (size_t i = 0; i < proch.length(); i++)
	{
		int poz = i;
		if (proch[i] == hledany[0])
		{
			for (size_t j = 0; j < delka; j++)
			{
				if (proch[i + j] != hledany[j]) // retezec tam neni
				{
					break;
				}
				else if (j == delka -1)
				{
					if (proch[i + j] == hledany[j])
					{
						pocet++;
					}
				}
			} // endfor
		} // endif
	} // endfor

	return pocet;
}

Tento algoritmus když si vhodně přepišeš do Javy, vložíš ho na správný místo a přidáš ještě ověření konce řádku, tak by ti měl dělat to, co chceš.

Nahlásit jako SPAM
IP: 46.39.172.–
Inject all the dependencies!
KIIV
~ Moderátor
+43
God of flame
20. 2. 2015   #4
-
0
-

nestacilo by:  

try {
  FileReader fR = new FileReader("text.txt");
  BufferedReader subor = new BufferedReader(fR);
  while ((riadok = subor.readLine()) != null) {
    text += riadok + "\n";
    znaky = riadok.length();
    z = z + znaky;

    int pos = riadok.indexOf(hledane); // vraci -1 kdyz nenajde
    while (pos >= 0) {
      ++nalezeno;
      pos = riadok.indexOf(hledane, pos+1); // hledame dalsi o jednu pozici dal, nez jsme nasli
    }
  }
  subor.close();
} catch (IOException e) {
  System.out.println(e.toString());
}
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Anonym
~ Anonymní uživatel
454 příspěvků
20. 2. 2015   #5
-
0
-

#4 KIIV

Ďakujem, funguje!

Nahlásit jako SPAM
IP: 95.105.210.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Vyskyt slova — založil kejta

Vyskyt fraz v Eclipse — založil marioff

Po 2 vete konec — založil Anonym

Slova ve vete — založil karl

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý