Konzorol szöveg bekérés, és 2 dimenziós tombbe mentes?
?
N*M-es tömb? Ha felső sort kitöltöm a másodikba csak a leghosszabbat, akkor pazaroljuk a memóriát, mert a 2. sorban csak 1-et fogunk lefoglalni. Ennek nincs értelme.
Fogalmazd meg jobban a feladatot.
Kurzusos feladat, most tanulom még csak, és ezt adták.
Lényegében annyi hogy pl. az "Ez egy szoveg!" konzolrol beirt szoveget az elso tombbe mentse el, és a második tömbbe pedig a legtöbb karakterből álló szót, ami jelen esetben a szöveg! (felkiátójellel). Tehát karakterekre is fel kell bontani valamikor.
Próbálkoztam tényleg, vagy 6 órát ültem felette, - mérgemben el is ment vagy fél doboz cigi -de sehogy sem jó. Igaz, én úgy próbáltam, hogy alapból stringnek adtam meg a szöveget, nem pedig argumentumba, se nem pedig konzolra... De azt hiszem az en modszeremmel meg sem lehet oldalni.
Te érted is, amit leírsz? - "alapból stringnek adtam meg a szöveget, nem pedig argumentumba, se nem pedig konzolra"
Ha stringként kezeled a mondatot, akkor az tulajdonképpen alapból karakterekre van bontva, szóval jó az irány.
Csinálhatod úgy a feladatot, hogy a stringet berakod az első tömb végére, majd egy ciklussal elkezded feldarabolni szavanként (mondjuk a szóköz, mint szóelválasztó, jó észrevétel lehet) a stringet és az aktuális szót eltárolod, HA a szó hosszabb az előzőnél. Miután a ciklus lefut, az eltárolt szót berakod a második tömb végére.
A beépített String Class tartalmaz egy split() nevű metódust, ami String tömböt ad vissza, remélem ismered. De ha nem:
Ha van egy Stringed:
String str = "egy ketto harom";
akkor
String[] tomb = str.split(" ");
tömbbe darabolja a stringet a split-nek megadott paraméter előfordulásai mentén.
Tartalmaz még a String Class egy intet visszaadó length() metódust, remélem ismered. Például tomb[0].length(); 3-at fog visszaadni, mert most tomb[0] == "egy".
Ennek nem sok értelmét látom hogy "a második dimenzióba kerül a legosszabb szó", karakterekre darabolva. Egy kétdimenziós tömb Java-ban az tömböknek egy tömbje, esetünkben egy String tömb tömb. Legyen mondjuk ez kételemű, tehát két String tömböt tartalmaz a tömb. Az első String tömb a szavak, a második pedig a leghosszabb szó karakterei. Na most ez nem a "második dimenzióba" kerül, mert lehetne akár 8-elemű is ez a String tömb tömb (tehát 8 String tömbböl álló tömb), attól még ugyanúgy kétdimenziós lenne.
Na most a split() metódussal karakterekre is lehet bontani egy Stringet. Java 8-tól ennyi az egész: szo.split("")
Régebbi Java-val: szo.split("(?!^)")
hogy ez miért is működik, meg kell tanulnod a reguláris kifejezéseket (regex)
Szóval most van két tömböd, egy szavak tömbje és egy karaktertömb (ami nem char tömb, hanem egy-hosszúságú Stringek tömbje). Megcsinálod a kétdimenziós tömbödet és ezeket belerakod. És itt jön a probléma, hogy ha nem ugyanolyan hosszú a kettő. Akkor mondjuk a rövidebbet ugyanolyan hosszúra kell csinálni, mint a másik, mondjuk üres Stringekkel feltöltöd a végét.
"És itt jön a probléma, hogy ha nem ugyanolyan hosszú a kettő. Akkor mondjuk a rövidebbet ugyanolyan hosszúra kell csinálni, mint a másik, mondjuk üres Stringekkel feltöltöd a végét."
Rosszul mondtam. Nem szükséges hogy egy hosszúságúak legyenek, ha nem definiálod a tömbtömb második dimenzióját, így:
String[][] tombtomb = new String[2][];
tombtomb[0] = szavak;
tombtomb[1] = leghosszabbszo;
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!