Forum » Programiranje » PAPAJSCINA Java problem
PAPAJSCINA Java problem
fingaz ::
Naloga :
Papajščina je jezik, ki ga dobimo iz slovenščine tako, da za vsakim samoglasnikom X vrinemo dvočrkovni zlog 'PX'. Primer: slovenski stavek 'Danes je lep dan' se v papajščini glasi takole: 'Dapanepes jepe lepep dapan'.
Testiram samo dodajanje v niz vendar si ze dobri 2 uri razbijam glavo ...
Mi lahko prosm nekdo pove zakaj mi v prvem primeru lepo vrine niz pa.. v 2 primeru pa mi vrine samo crko p a pa doda na koncu..prosim za razlago hvala!
Papajščina je jezik, ki ga dobimo iz slovenščine tako, da za vsakim samoglasnikom X vrinemo dvočrkovni zlog 'PX'. Primer: slovenski stavek 'Danes je lep dan' se v papajščini glasi takole: 'Dapanepes jepe lepep dapan'.
package Vaje; public class Stringi { public static void main(String[] args) throws Exception{ //1 primer String niz="Danes"; StringBuffer niz1=new StringBuffer(niz); niz1.insert(2,"pa"); System.out.println(niz1); // 2 primer String niz2="Danes"; StringBuffer nizx=new StringBuffer(); for(int i=0;i<niz2.length();i++) { if(niz2.charAt(i)=='a') { nizx.insert(i,"pa"); } else niz1.insert(i,niz2.charAt(i)); } System.out.println(niz1); } }
Testiram samo dodajanje v niz vendar si ze dobri 2 uri razbijam glavo ...
Mi lahko prosm nekdo pove zakaj mi v prvem primeru lepo vrine niz pa.. v 2 primeru pa mi vrine samo crko p a pa doda na koncu..prosim za razlago hvala!
alexa-lol ::
don't worry..this works
import java.util.Scanner; public class Papajscina { public static void main(String[] args){ String[] stringArray = {"a","e","i","o","u"}; System.out.print("Vnesi poved:"); String string = read(); for(int i = 0; i < stringArray.length;i++){ String temp = stringArray[i]; string = string.replaceAll(temp, temp+"p"+temp); } System.out.println(string); } public static String read(){ String string; Scanner in = new Scanner(System.in); string = in.nextLine(); in.close(); return string; } }
moowy123 ::
Pri tvoji kodi so 2 napake znotraj for zanke:
nizx.insert(i,"pa"); -> nizx.insert(i+1,"pa");
na koncu znotraj for zanke manjka i+=2;
Pa preverjati bi moral še za vse samoglasnike, ne samo za a.
nizx.insert(i,"pa"); -> nizx.insert(i+1,"pa");
na koncu znotraj for zanke manjka i+=2;
Pa preverjati bi moral še za vse samoglasnike, ne samo za a.
alexa-lol ::
evo popravljena koda...(tvoja delna)..
sicer še nisem delal s string bufferjem ampak vseeno....stvar v obeh primerih dela tako kot mora...
v prvem primeru se ti sklicujes na znak z indekosom 2..torej tretji znak... pac 4 mestna beseda ima indekse 0, 1, 2, 3....
V drugem primeru se naredi tole...
ko je i = 0 pogleda znak 'D', ki ni enak 'a'...zato se vsebina if stavka ne izvrsi
ko je i = 1 pogleda znak 'a' in ker je enak 'a' bi glede na staro kodo vstavil ta nov string od 1. mesta naprej (v prvem primeru pa od 2. - tu je napaka)...ti želiš, da prvotni 'a' ohrani in doda od njega naprej zato moreš prišteti 1, da bo dodal od i+1 mesta naprej...
Pazi s temi indeksi....tako C kot Java imata indekse od 0 naprej... pri 99% podatkovnih strukturah
lp
PS drugace pa dobro bi bilo ce bi se naucil uporabljati debugger...ce te zanima ti lahko posljem prosojnice, ki jih imamo na faksu...poslji na PM
package pack1; public class NewClass { public static void main(String[] args) throws Exception{ //1 primer String niz="Danes"; StringBuffer niz1=new StringBuffer(niz); niz1.insert(2,"pa"); System.out.println(niz1); // 2 primer String niz2="Danes"; StringBuffer nizx=new StringBuffer(niz); for(int i=0;i<niz2.length();i++) { if(niz2.charAt(i)=='a') { nizx.insert(i+1,"pa"); } } System.out.println(nizx); } }
sicer še nisem delal s string bufferjem ampak vseeno....stvar v obeh primerih dela tako kot mora...
v prvem primeru se ti sklicujes na znak z indekosom 2..torej tretji znak... pac 4 mestna beseda ima indekse 0, 1, 2, 3....
V drugem primeru se naredi tole...
ko je i = 0 pogleda znak 'D', ki ni enak 'a'...zato se vsebina if stavka ne izvrsi
ko je i = 1 pogleda znak 'a' in ker je enak 'a' bi glede na staro kodo vstavil ta nov string od 1. mesta naprej (v prvem primeru pa od 2. - tu je napaka)...ti želiš, da prvotni 'a' ohrani in doda od njega naprej zato moreš prišteti 1, da bo dodal od i+1 mesta naprej...
Pazi s temi indeksi....tako C kot Java imata indekse od 0 naprej... pri 99% podatkovnih strukturah
lp
PS drugace pa dobro bi bilo ce bi se naucil uporabljati debugger...ce te zanima ti lahko posljem prosojnice, ki jih imamo na faksu...poslji na PM
Zgodovina sprememb…
- spremenil: alexa-lol ()
phyro ::
glede na to da greš povrsti gradiš string iz leve proti desni, se pravi dodajaš sam na konec. V tem primeru lahko uporabiš append() metodo
sam to ni to kar iščeš, pri tebi pa, če se ne motim je bil problem, da si naredu stringBuffer dolžine 0 in hotu dostopat do nekih indeksov in ti je vrglo da si sou vn iz tabele
String niz2="Danes"; StringBuffer nizx=new StringBuffer(""); for(int i=0;i<niz2.length();i++) { if(niz2.charAt(i)=='a') { nizx.append("pa"); } else nizx.append(niz2.charAt(i)); } System.out.println(niz1);
sam to ni to kar iščeš, pri tebi pa, če se ne motim je bil problem, da si naredu stringBuffer dolžine 0 in hotu dostopat do nekih indeksov in ti je vrglo da si sou vn iz tabele
fingaz ::
Cist nc mi ni vec jasn..teli fucking stringi!
izpis : DDnes je lep dpnpaaanes je lep dan
WTF
Mi lahko edn spise kodo do konca (se za ostale samoglasnike, da bom pol razmislov kako in kaj ) ker js sm cist zablokirov pa mi tole ne bo ratal se ksn mesc...:|
Hvala
Hvala :|
public class Stringi { public static void main(String[] args) throws Exception{ String niz="Danes je lep dan"; StringBuffer niz1=new StringBuffer(niz); for(int i=0;i<niz.length();i++) { char ch=niz.charAt(i); if(ch=='a') { niz1.insert(i+1,"pa"); } else niz1.insert(i,ch); } System.out.println(niz1); } }
izpis : DDnes je lep dpnpaaanes je lep dan
WTF
Mi lahko edn spise kodo do konca (se za ostale samoglasnike, da bom pol razmislov kako in kaj ) ker js sm cist zablokirov pa mi tole ne bo ratal se ksn mesc...:|
Hvala
Hvala :|
Zgodovina sprememb…
- spremenil: fingaz ()
phyro ::
String niz2="Danes je lep dan"; StringBuffer nizx=new StringBuffer(""); for(int i=0;i<niz2.length();i++) { char ch=niz2.charAt(i); if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u') { StringBuffer temp = new StringBuffer("p"); temp.append(ch); nizx.append(ch); nizx.append(temp.toString()); } else nizx.append(ch); } System.out.println(nizx);
edit: tole nardi iz "Danes je lep dan" -> "Dapanepes jepe lepep dapan" če se ne motim
Zgodovina sprememb…
- spremenil: phyro ()
Spura ::
Cist nc mi ni vec jasn..teli fucking stringi!
public class Stringi { public static void main(String[] args) throws Exception{ String niz="Danes je lep dan"; StringBuffer niz1=new StringBuffer(niz); for(int i=0;i<niz.length();i++) { char ch=niz.charAt(i); if(ch=='a') { niz1.insert(i+1,"pa"); } else niz1.insert(i,ch); } System.out.println(niz1); } }
izpis : DDnes je lep dpnpaaanes je lep dan
WTF
Mi lahko edn spise kodo do konca (se za ostale samoglasnike, da bom pol razmislov kako in kaj ) ker js sm cist zablokirov pa mi tole ne bo ratal se ksn mesc...:|
Hvala
Hvala :|
To pa zato ker v niz1 ze das niz cist za brezveze in pol kr neki insertas? ZAKAJ?
StringBuffer niz1 = new StringBuffer();
In potem appendas.
In ce ze insertas, potem moras, logicno, samo "p" insertat ne pa "pa".
public class Stringi { public static void main(String[] args) throws Exception{ String niz="Danes je lep dan"; StringBuffer niz1=new StringBuffer(); for(int i=0;i<niz.length();i++) { char ch=niz.charAt(i); if(ch=='a') { niz1.append("pa"); } else niz1.append(ch); } System.out.println(niz1); } }
Spura ::
HAHA DISREGARD THAT I SUCK COCKS
Nism dobr prebral navodil.
Tut mal bolj zgleda brez tok retardirane identacije, else stavkov brez bloka, for zanke z indeksom brez potrebe etc...
Nism dobr prebral navodil.
public class Stringi { public static void main(String[] args) throws Exception{ String niz="Danes je lep dan"; StringBuffer rezultat = new StringBuffer(); for(char ch : niz.toCharArray()) { if(isVowel(ch)) { rezultat.append(ch) rezultat.append('p')'; } rezultat.append(ch); } System.out.println(rezultat.toString()); } private static boolean isVowel(char ch) { if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' || ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') { return true; } else { return false; } } }
Tut mal bolj zgleda brez tok retardirane identacije, else stavkov brez bloka, for zanke z indeksom brez potrebe etc...
Zgodovina sprememb…
- spremenil: Spura ()
alexa-lol ::
ni mi jasno zakaj vsi string buffer uporabljate kot, da je edini... z navadnim stringom se da zadevo cist elegantno realizirati
arjan_t ::
ker je hitrejše, v tem primeru bi bil celo "boljši" StringBuilder, ker ni potrebe po sinhronizaciji
EDIT: v tem primeru razlike seveda ni
EDIT: v tem primeru razlike seveda ni
Zgodovina sprememb…
- spremenil: arjan_t ()
arjan_t ::
Poženi to, pa ti bo jasno:
public class Test { public static void main(String[] args) { final int N = 100000; String a = ""; long start = System.currentTimeMillis(); for(int i=0; i<N; i++) { a += "a"; } System.out.println(System.currentTimeMillis() - start); StringBuilder b = new StringBuilder(); start = System.currentTimeMillis(); for(int i=0; i<N; i++) { b.append("b"); } b.toString(); System.out.println(System.currentTimeMillis() - start); } }
Spura ::
ni mi jasno zakaj vsi string buffer uporabljate kot, da je edini... z navadnim stringom se da zadevo cist elegantno realizirati
Zato ker je model prosil za rešitev osnovano na njegovi.
Zgodovina sprememb…
- spremenil: Spura ()
alexa-lol ::
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | java mali problem (začetnik)Oddelek: Programiranje | 2392 (2135) | ozbolt |
» | [Java] Frekvenca besedOddelek: Programiranje | 1316 (1170) | zila90 |
» | Java-Izdelek-NujnoOddelek: Programiranje | 1500 (1272) | iggy |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3523 (2745) | Tutankhamun |
» | [NALOGA][Java] Branje vsebine datoteke vzvratnoOddelek: Programiranje | 1600 (1542) | SkIDiver |