Csak akkor olvass tovább, ha a Nagy Kezdőbetűs Szavak feladatot megoldottad, vagy nem sikerült megoldani.
Az alap feladatot a fenti linken megtalálod. Kétféle megoldást is megadok, sőt, a karakterek kis-nagybetűs átalakítására is adok külön kétféle megoldást. A feladat megoldását NetBeans project formában innen letöltheted.
/** * * @author http://webotlet.hu */ package webotlet_nagykezdobetus; public class Webotlet_NagyKezdobetus { public static void main( String[] args ) { String s = "ez egy mondat lenne, melynek minden "+ "szavat nagy kezdobetusse kellene alakitani."; String nagyS; // 1. megoldas System.out.println( "\n1. megoldas" ); System.out.println( "Eredeti:\n"+s ); char[] tomb = s.toCharArray(); tomb[0] = Character.toUpperCase(tomb[0]); // vagy // tomb[0] = (char)(tomb[0]-32); for( int i = 1; i < tomb.length; i++ ) { if( tomb[i] == ' ' ) { tomb[i+1] = Character.toUpperCase(tomb[i+1]); // vagy // tomb[i+1] = (char)(tomb[i+1]-32); } } nagyS = new String(tomb); System.out.println( "Nagykezdo:\n"+nagyS ); // 2. megoldas System.out.println( "\n2. megoldas" ); System.out.println( "Eredeti:\n"+s ); StringBuilder sb = new StringBuilder(s); sb.setCharAt(0, Character.toUpperCase( sb.charAt(0))); // vagy // sb.setCharAt(0, (char)(sb.charAt(0)-32)); for( int i = 1; i < sb.length(); i++ ) { if( sb.charAt(i) == ' ' ) { sb.setCharAt(i+1, Character.toUpperCase( sb.charAt(i+1))); // vagy // sb.setCharAt(i+1, (char)(sb.charAt(i+1)-32)); } } System.out.println( "Nagykezdo:\n"+sb ); } }
Kicsit túlkomplikáltad.
Így rövidebb és egyszerűbb:
String s1 = “Ez egy mondat lenne, melynek minden szavat nagy kezdobetusse kellene alakitani.”;
char[] st1 = s1.toCharArray();
String sz;
for (int i = 0; i < st1.length – 1; i++) {
if (st1[i] == ' ') {
sz = String.valueOf(st1[i+1]).toUpperCase();
st1[i+1] = sz.charAt(0);
}
}
String s2 = String.valueOf(st1);
System.out.println(s2);
Nem egyszerűbb. Te ezt csinálod:
1. eredeti String -> karaktertömb
2. kezdőbetű karakterek -> String-gé
3. kezdőbetű Stringek -> nagybetűssé
4. nagybetűs Stringek -> karakterré
5. karaktertömb -> String-gé
Nálam:
1. eredeti String -> karaktertömb
2. kezdőbetű karakterek -> nagybetűs karakterek
3. karaktertömb -> String-gé
Te csinálsz egy karakter -> String -> karakter konvertálást feleslegesen (2, 4-es lépések) A karakterek közvetlenül nagybetűssé alakíthatóak, nem kell Stringet készíteni belőlük, az már önmagában is időigényes.
esetleg ez nem egyszerűbb?(csak most tanulom, szóval lehet nincs igazam)
String szoveg = “itt most minden szonak nagy betuvel kene kezdodnie”;
String[]szavak = szoveg.split(” “);
String mondat;
for (int i = 0; i < szavak.length; i++) {
System.out.print(mondat = szavak[i].substring(0, 1).toUpperCase()+szavak[i].substring(1)+" ");
}
Nem tudom, hogy mennyire lehet itt ítéletet hirdetni, hogy ez a jobb vagy az a jobb. A lényeg egyelőre egy működő megoldás. Amit te írtál, első olvasatra helyes eredményt ír ki, de most egy erősnek ható kritika jön, nem rosszindulat mondatja velem:
A megoldásodban kifejezetten rossz és felesleges, hogy a kiíratáson belül értékadást is használsz. A kiíratás feladata csak annyi, hogy megjelenítsen valamit a képernyőn, nem lehet más dolga, nincs értelme oda más feladatot berakni.
A mondat változót (aminek ott adsz értéket) ráadásul nem is használod semmire azon kívül, hogy mindig csak az aktuális szó nagybetűs változata lesz benne, ami kiírsz, és a következő körben már másik szót raksz bele.
A megoldás kimenet szerint helyes lesz, de az említett értékadás nem jó szokás. Ha mindenképpen szeretnéd a mondatot összegyűjteni, akkor a kiíratás előtt tárold el a nagybetűs szót egy változóba, írd ki, és utána fűzd hozzá a mondathoz.
Egyszerűnek szerintem nem egyszerűbb a közvetlen karakter átalakításos módszernél, mert így egy szót két részre kell vágnod (két másik String-re), amiből az egyiket alakítod csupa nagybetűsre (az egyetlen kezdőbetűt), majd a két String-et újra összefűzöd. Ez biztosan időigényesebb művelet, mint csak 1-1 karaktert direkt módon átalakítani.
Ettől függetlenül (pláne, hogy nemrég kezdted), mindenképpen jó, hogy meg tudtad oldani a feladatot, csak így tovább 🙂
Köszi a segítséget! Nem tudom honnan jön rá erre magától az ember, egyenlőre google a barátom és próbáom összerakni a programjaimat.
Koszonom a segitseget!