Řetězce přes metody – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Řetězce přes metody – Java – Fórum – Programujte.comŘetězce přes metody – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Miko
~ Anonymní uživatel
3 příspěvky
14. 10. 2013   #1
-
0
-

Ahoj všem , dosteli jsme ukol z programovani , cilem je vytvorit program kdyz zadame 2 vety a mame zjistit klikrat se dane slovo v ty vete opakuje ...mam vytovreny uz neco ale uz nevim jak dal  

import java.util.Scanner;
public class metoda {
	
	
	public static void vety(String txt , String txt2){
		int shoda = 0;
		int c = 0;
		if(txt.length() < txt2.length()){
			System.out.print("První věta musí bejt delší");
		}else{
	           for(int i = 0; i < txt.length() - txt2.length() + 1; i++ );{
	        	  if( txt.charAt(i) == txt2.charAt(0) ) {
	        		  for ( int j = 0 ; j < txt2.length() ; j++) {
	        			  if (txt2.charAt(j) == txt.charAt(i + j)) {
	        				  
	        			  }
	        		  }
	        	  }
	           }
	
	
	
	
		
			if(txt.length() < txt2.length()){
				System.out.print("První věta musí bejt delší");
			}else{
				for (int i = 0; i < txt.length()-txt2.length()+1; i++) {
					if(txt.charAt(i) == txt2.charAt(0)){
						for (int j = 0; j < txt2.length(); j++) {
							if(txt2.charAt(j) == txt.charAt(i+j)){
								shoda ++;
							}else{
								shoda = 0;
							}
						}
					}
				}
			}
			
			public static void main(String[] args) {
				Scanner scn = new Scanner (System.in);
				System.out.print("Zadej 1. větu > ");
				String txt = scn.nextLine();
				System.out.print("Zadej 2. větu > ");
				String txt2 = scn.nextLine();
				
			
			
			
			if(shoda==0){
				System.out.print("Nevyskutuje se");
			}else{
				System.out.print("Vyskutuje se");
			}
	}

}

Nahlásit jako SPAM
IP: 88.146.206.–
Reklama
Reklama
sleepy
~ Anonymní uživatel
422 příspěvků
14. 10. 2013   #2
-
0
-

Uz to tu bolo raz riesene. Rozsekaj si vety na slova pomocou metody split(",? "); Slova ukladaj do Set-u a metodou add(slovo). Ak vrati false tak si nasiel zhodu a mozes skoncit.

Nahlásit jako SPAM
IP: 147.175.177.–
sleepy
~ Anonymní uživatel
422 příspěvků
14. 10. 2013   #3
-
0
-

Jaj pardon tak za kazdym false pripocitas +1 k danemu slovu. Tak ma napada mozno je lepsia Map-a ako Set s tym ze Kluc bude slovo a hodnota bude pocet vyskytov.

Nahlásit jako SPAM
IP: 147.175.177.–
z
~ Anonymní uživatel
268 příspěvků
14. 10. 2013   #4
-
0
-

   

public static boolean jeOddelovac(char c) {
	return !Character.isLetterOrDigit(c);
}
 
public static int pocetVyskytu(String veta, String slovo) {
	if (veta.length() == 0 || slovo.length() == 0)
		return 0;

	int pocet = 0;

	for (int i = 0; i < veta.length(); i++) {
		int j;
		for (j = 0; j < slovo.length() && i+j < veta.length(); j++) {
			if (slovo.charAt(j) != veta.charAt(i+j))
				break;
		}
		if (j == slovo.length() && (i+j == veta.length() || jeOddelovac(veta.charAt(i+j)))) {
			pocet++;
			i += j;
		}
	}

	return pocet;
}
Nahlásit jako SPAM
IP: 78.156.159.–
sleepy
~ Anonymní uživatel
422 příspěvků
14. 10. 2013   #5
-
0
-

#4 z
To som zvedavy ako si to poradi s ciarkou :). Ale aj to je riesenie. Tu je to s tou map-ou.
 

/*
 * Hlada pocet vyskytov slov vety2 vo vete1. Na vystupe dostanes mapu ta ma v sebe 
 * metodu toString() override-nutu. Takze staci len volat 
 * System.out.println(pocetSlov(veta1, veta2)).
 */
public TreeMap<String, Integer> pocetSlov(String veta1, String veta2) {
	TreeMap<String, Integer> pocetSlov = new TreeMap<String, Integer>();
	// Delenie stringu na slova podla regularneho vyrazu
	// Teda oddeli slova od seba ak sa medzi nimi nachadza medzera, alebo ciarka a 
	// medzera. Da sa upravit aby to robil ak medzi slovami nachadza lubovolny 
	// pocet whitespacov a ciarok prip. inich znakov: "\\s*[,\\s],*\\s+" asi takto
	String[] matchingWords = veta2.split(",? ");
	for(String word : matchingWords) {
		pocetSlov.put(word, 0);
	}
	String[] words = veta1.split(",? ");
	for(String word : words) {
		Integer currentWordCount = null;
		// Ak sa slovo vo vete2 nachadza (teda ta zauima) tak sa vrati pocet 
		// vyskytov inak sa vrati null
		if((currentWordCount = pocetSlov.get(word) != null)
			pocetSlov.put(word, currentWordCount+1);
			
	}
	return pocetSlov;
}
Nahlásit jako SPAM
IP: 147.175.177.–
z
~ Anonymní uživatel
268 příspěvků
14. 10. 2013   #6
-
0
-

#5 sleepy
Já jsem si ten popis a kód vyložil tak, že druhá věta je jedno slovo.

Nahlásit jako SPAM
IP: 78.156.159.–
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, 33 hostů

Podobná vlákna

řetězce — založil ench

[VB] řetězce — založil aTTix

řetězce — založil ench

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ý