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

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

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Anonym
~ Anonymní uživatel
429 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.–
Reklama
Reklama
NotBeginner
~ Anonymní uživatel
181 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+42
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
429 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, 24 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 © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý