Mi a hiba a programomban (netbeansbe írtam, java nyelven)? Részletek lent.
Szóval a feladat:írd be egy szövegmezőbe a szöveget és a gombra kattintva a szövegarea-ba(nem tudom a pontos magyar nevét) írja ki egyesével a magánhangzók számát. Namost létrehoztam egy JFrameform-ot, beleraktam a design résznél gombot, szövegmezőt meg szövegarea-t és annál a résznél, ahol leírva adja ki a programot a TODO-s sor alá beírtam ezt:
String szoveg=jTextField1.getText();
int a=0;
int á=0;
int e=0;
int é=0;
int i=0;
int í=0;
int o=0;
int ó=0;
int ö=0;
int ő=0;
int u=0;
int ú=0;
int ü=0;
int ű=0;
for (int k=0; k<szoveg.length(); k++)
{
if (szoveg.charAt(k)=='a')
a++;
if (szoveg.charAt(k)=='á')
á++;
if (szoveg.charAt(k)=='e')
e++;
if (szoveg.charAt(k)=='é')
é++;
if (szoveg.charAt(k)=='i')
i++;
if (szoveg.charAt(k)=='í')
í++;
if (szoveg.charAt(k)=='o')
o++;
if (szoveg.charAt(k)=='ó')
ó++;
if (szoveg.charAt(k)=='ö')
ö++;
if (szoveg.charAt(k)=='ő')
ő++;
if (szoveg.charAt(k)=='u')
u++;
if (szoveg.charAt(k)=='ú')
ú++;
if (szoveg.charAt(k)=='ü')
ü++;
if (szoveg.charAt(k)=='ű')
ű++;
}
String s="a: "+a+"\n"+"á: "+á+"\n"+"e: "+e+"\n"+"é: "+é+"\n"+"i: "+i+"\n"+"í: "+í+"\n"+"o: "+o+"\n"+"ó: "+ó+"\n"+"ö: "+ö+"\n"+"ő: "+ő+"\n"+"u: "+u+"\n"+"ú: "+ú+"\n"+;"ü: "+ü+"\n"+"ű: "+ű+"\n"; (ez az egész egy sor a String s-től)
jTextArea1.setText(s);
}
És a String s-től kezdődő hosszú sort aláhúzza pirossal, és nem is működik a program. Mi a hiba? A válaszokat köszönöm.
Hagyd már, ezért jó az internet, ott bárki hisztizhet bármiről.
A tömb teljesen jó lesz, azzal is szebb, jobb lesz, mint ez a "kód".
Igazuk van azoknak, akik a Map-et javasolják. Ugyanis a hash táblának, mint adatszerkezetnek pont az a feladata, hogy egy adott kulcshoz egy adott értéket rendeljen hozzá. Természetesen a kulcsnak egyértelműen azonosítania kell az értéket, ebből kifolyólag egy kulcs csak egyszer szerepelhet.
Hogyan is néz ez ki?
Map<K, V>
Ahol a K a kulcs típusát jelenti, míg V az érték típusát. Ezeket te választhatod meg. Egyetlen megkötés van, amit mindjárt el is magyarázok.
Java-ban vannak ún. primitív típusok és összetett típusok. A primitív típus értelemszerűen egy értéket tud tárolni, míg az összetett típus egy bonyolultabb dolgot jelent. Mivel a Map egy generikus interfész, és Java-ban generikus típusoknak csak összetett típusokat használhatsz, így célszerű lesz a Character illetve az Integer osztályokat használni. Ezek az osztályok azért léteznek, hogy egy összetett típusba burkoljon egy primitív típusú adatot (a Character a char-t, az Integer az int-et).
Tehát:
Map<Character, Integer> LetterCount = new HashMap<Character, Integer>();
Vagy a Java 7-ben bevezetett Diamond operátort használva:
Map<Character, Integer> LetterCount = new HashMap<>(); //Elvégre minek írjuk ki mindkét oldalra ugyanazokat a típusokat?
A feladatot én így oldanám meg:
Vegyük sorra az S string összes karakterét. Az éppen kiválasztott karaktert jelölük C-vel.
.. Ha a Map-ben van C kulcsú érték:
.. .. Növeljük eggyel a Map-ben a C kulcs alatt tárolt értéket
.. Különben:
.. .. Vegyük fel a Map-ben a C kulcs alatt az 1 értéket.
Csak felesleges a map, egy sima tömbbel szoktál megoldani az ilyen billentyű és szövegfeldolgozási feladatokat. Nem használok Javat de ott is valahogy így néz ki:
int[] tömb = new tömb[256];
for(int k=0; k<szoveg.length(); k++)
tömb[szoveg.charAt(k)]++;
String s="a: "+tömb['a']+"\ná: "+tömb['á']+....;
Ilyent nem tanultunk...
Az a gond, hogy a fősulin/egyetemen is ez lehet a helyzet. Én első félévben első prog zh-n majdnem visszaadtam a feladatsort, mondván ezt nem tanultuk.
Igen valóban nem tanultuk pl. azt, hogy mit jelent az egységmátrix, azonban neten utána lehetett volna nézni...És a tanult dolgokkal meg lehetett oldani ezt az egyégmátrixos feladatot.
Az, hogy megoldottad, az jó, haladás (de tényleg), azonban ezt meg lehetne oldani tömbbel is vagy map-al.
A tanár nem jól tanít...mondjuk el lehet hinni, hogy a tanár módszere nem megfelelő, emellett az osztály nagy(? vagy teljes?) része nem bír lépést tartani.
Általános iskolás, gimis vagy?
Ebből a részből lesz-e a dolgozatban?
Ha kell és/vagy érdekel a programozás, akkor bizony otthon is kell ezzel foglalkozni. :S
Nekem is volt olyanban részem, hogy amit a tanár mutatott, nem bírtam követni.De ez esetben két opció van:
vagy hagyom az egészet a ()-ba (ez esetben arra van veszély, hogy rossz jegyet kap az ember),
vagy otthon nekiülök és próbálom megérteni (net segítségével vagy az ajánlott irodalommal vagy az órán használt bemutatóval)
(esetleg óra után megkérdezem a tanárt, de ehhez az is szükséges, hogy a tanár hajlandó legyen válaszolni, ne pattintson le, stb)
"Csak felesleges a map, egy sima tömbbel szoktál megoldani az ilyen billentyű és szövegfeldolgozási feladatokat."
Nyilván te is látod, hogy amit leírtál, az integerhez rendel integert, azért jó a tömb, de igazából ez egy map.
Az if-eknél kihagytad a {} jeleket!
if (szoveg.charAt(k)=='a') {
a++
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!