» »

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'.

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;
    }
}

fingaz ::

Hvala ampak bi se vseeno prosil ce bi mi lahko razlozil napako pri moji kodi.

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.

alexa-lol ::

evo popravljena koda...(tvoja delna)..
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…

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
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!
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 ()

medobear ::

Kam hodis v solo fingaz? :)

fingaz ::

FRI ty pyro

Zgodovina sprememb…

  • spremenil: fingaz ()

iggy ::

huh luštno, izpiti za prvi semester se bližajo vidim :D
Hey, you're fat!

alexa-lol ::

priporocal bi ti da malo več vadis programiranje ter uporabo Java docs

have fun

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.

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

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 ::

alexa-lol je izjavil:

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 ::

Spura je izjavil:

alexa-lol je izjavil:

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.


ubistvu sprasuje za resitev problema (oznacil je napacne indekse)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

java mali problem (začetnik)

Oddelek: Programiranje
192392 (2135) ozbolt
»

[Java] Frekvenca besed

Oddelek: Programiranje
71316 (1170) zila90
»

Java-Izdelek-Nujno

Oddelek: Programiranje
71500 (1272) iggy
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403523 (2745) Tutankhamun
»

[NALOGA][Java] Branje vsebine datoteke vzvratno

Oddelek: Programiranje
71600 (1542) SkIDiver

Več podobnih tem