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 | 2657 (2400) | ozbolt |
| » | [Java] Frekvenca besedOddelek: Programiranje | 1464 (1318) | zila90 |
| » | Java-Izdelek-NujnoOddelek: Programiranje | 1605 (1377) | iggy |
| » | osnove v Javi - zvezdiceOddelek: Programiranje | 3783 (3005) | Tutankhamun |
| » | [NALOGA][Java] Branje vsebine datoteke vzvratnoOddelek: Programiranje | 1715 (1657) | SkIDiver |