Forum » Programiranje » java mali problem (začetnik)
java mali problem (začetnik)
ozbolt ::
http://pastebin.com/Tjn3QfAb
Noče mi delat ko je ob stringu daljšem od 3 znakov vedno false :(. Drugače pa za dva znaka dela.
Kaj je narobe z mojo sintakso.
Pa mimogrede mi bo verjetno še nekdo povedal kako je grdo rešeno in kako se elegantno popravi :)
Noče mi delat ko je ob stringu daljšem od 3 znakov vedno false :(. Drugače pa za dva znaka dela.
Kaj je narobe z mojo sintakso.
Pa mimogrede mi bo verjetno še nekdo povedal kako je grdo rešeno in kako se elegantno popravi :)
Matek ::
Narobe primerjaš stringe, z '==' ne bo šlo. Klik. Sicer pa čisto ok rešeno.
Bolje ispasti glup nego iz aviona.
Zgodovina sprememb…
- spremenil: Matek ()
detroit ::
Lep primer stric, res. My favourite:)
Drugače pa si se nekako omejil na tri znake (če ne sklepam prehitro iz te kode:)
Probaj se znebit omejitev.
Poizkušaj takole (pseudo da ti ne uničim funna:) :
string temp (dolžine vhodniniz.length);
int k = 0;
forzanka (i gre od vhodniniz.length-1 do 0)
{
temp[k] = vhodniniz[i];
k povečaj za ena
}
na uč
p.s. ja jest bi reku da preverjaš chare
Drugače pa si se nekako omejil na tri znake (če ne sklepam prehitro iz te kode:)
Probaj se znebit omejitev.
Poizkušaj takole (pseudo da ti ne uničim funna:) :
string temp (dolžine vhodniniz.length);
int k = 0;
forzanka (i gre od vhodniniz.length-1 do 0)
{
temp[k] = vhodniniz[i];
k povečaj za ena
}
na uč
p.s. ja jest bi reku da preverjaš chare
Skero
ozbolt ::
detroit, lahko vstavim katerikoli string (ni važno dolžina) pa bo preverlo. Itak vedno preveri, če sta zadnji in prvi znak ista. Če sta jih obreže in spet preverja prvi in zadnji znak. Ko je enkrat samo še en znak ali noben, potem potrdi da niz je "palindrom". Če vmes znaka nista enaka potem ga zavrne. Bom poskusil po tvoje (moje znanje je omejeno zelo tako da bomo videl kok daleč bom prišel), vendar še vedno ne vem zakaj mi ne teče kakor more.
Komur se da lahko vstavi niz asdfghjklkjhgfdsa in bo videl da se nariše 8 pikic = 8 korakov. Nisem omejen :)
Komur se da lahko vstavi niz asdfghjklkjhgfdsa in bo videl da se nariše 8 pikic = 8 korakov. Nisem omejen :)
Zgodovina sprememb…
- spremenil: ozbolt ()
Trinitron ::
Po hitrm pregledu morda tale vrstica v metodi middle(): String c = s.substring(1,l-1);
Bi rekel da bi moralo biti: String c = s.substring(1,l-2);
Bi rekel da bi moralo biti: String c = s.substring(1,l-2);
ozbolt ::
Ponavljam: (verjetno nisi videl tega edita iz prejšnega posta) Komur se da lahko vstavi niz asdfghjklkjhgfdsa in bo videl da se nariše 8 pikic = 8 korakov. Nisem omejen :)
Lepo preveri vseh osem korakov.
Lepo preveri vseh osem korakov.
Terman ::
ozbolt ::
Pogruntal rešitev... preštejmo e-je :). Samo to je bolj Microsoftovski način programiranja (grda koda) - or so I've heard
gendale ::
zakaj raje ne uporabiš string bufferja in njegove metode reverse, potem pa samo primerjaš dobljena niza?
Terman ::
A palindrom je, če ima length/2 e-jev?
Ker če je to res, še vedno ne veš zakaj stvar ne dela, čeprav bi morala. Pa še en facepalm sem naredil ko sem to prebral.
@gendale
Ker to dela za seminarsko, kjer mora uporabiti rekurzijo (le ugibam).
Ker če je to res, še vedno ne veš zakaj stvar ne dela, čeprav bi morala. Pa še en facepalm sem naredil ko sem to prebral.
@gendale
Ker to dela za seminarsko, kjer mora uporabiti rekurzijo (le ugibam).
detroit ::
@ozbolt se posipam s pepelom upam da bom drugič bolj "prisotn" predn bom glasn (gledam freddy elm street bullshit zravn:)
Skero
Terman ::
Ker vidim, da si zadovoljen z svojo rešitvijo, ti bom povedal problem. Pozabil si na return pred isPalindrome(e) v 27. vrstici.
ozbolt ::
zakaj raje ne uporabiš string bufferja in njegove metode reverse, potem pa samo primerjaš dobljena niza?
Ker ne znam
@Terman, preverja, če se niz isto bere od leve proti desni ter od desne proti levi. Npr anona
Ker vidim, da si zadovoljen z svojo rešitvijo, ti bom povedal problem. Pozabil si na return pred isPalindrome(e) v 27. vrstici.
Ja res je. Hvala. Ampak ne razumem zakaj, bi prosil za pomoč?
Terman ::
Uf, kje začeti.
Metoda isPalindrom vrne nek boolean. Ti njene vrednosti nikjer ne obravnavaš, zato je izgubljena. Program se potem naprej izvaja in izvede vrstico 32 (kot da bi klical kako void metodo).
Je sedaj kaj bolj jasno?
Metoda isPalindrom vrne nek boolean. Ti njene vrednosti nikjer ne obravnavaš, zato je izgubljena. Program se potem naprej izvaja in izvede vrstico 32 (kot da bi klical kako void metodo).
Je sedaj kaj bolj jasno?
Zgodovina sprememb…
- spremenil: Terman ()
gendale ::
zakaj raje ne uporabiš string bufferja in njegove metode reverse, potem pa samo primerjaš dobljena niza?
Ker ne znam
public static void main(String[] args){ StringBuffer temp = new StringBuffer(args[0]); temp.reverse(); String obratno = temp.toString(); if(obratno.compareTo(args[0]) == 0) System.out.println("je palindrom"); }
Spura ::
Ta resitev v pastebinu je dost ok napisana, je pa izredno pocasna (za vsaka 2 znaka konstruiras nov string).
Jst bi kaj takega napisal
Pomojem najhitrejsa varianta. Od gendaleta je pa najbolj komotna.
Jst bi kaj takega napisal
public boolean isPalindrome(String origString) { isPalindrome(origString.toCharArray()); } public boolean isPalindrome(char[] originalString) { final int lastLetterPos = originalString.length - 1; for (int i = 0; i < originalString.length;i++) { if (i <= lastLetterPos - i) { return true; } else if (originalString[i] != originalString[lastLetterPos - i]) { return false; } } }
Pomojem najhitrejsa varianta. Od gendaleta je pa najbolj komotna.
ozbolt ::
LP:
Evo, tole mi noče prav zračunat:
Mimogrede, računam ploščino med krivuljo sinx ter premicama y=0 ter x=1. Razlog: da vidim koliko je razlike med integralom ter seštevanjem malo večjih kosov...
Zakaj?
Evo, tole mi noče prav zračunat:
Mimogrede, računam ploščino med krivuljo sinx ter premicama y=0 ter x=1. Razlog: da vidim koliko je razlike med integralom ter seštevanjem malo večjih kosov...
public class OE1 { public static void main (String[] args) { int a = 5;//ne znam še funkcije inputa :) System.out.println(a); double b = sin(a); System.out.println(b); } public static double sin (int a) { double z = 0; int i = 1; while (a+1>i) { double t = Math.PI/(2*a)*i; //Vzamem srednjo vrednost med dvema različnima višinama krivulje double dt = (Math.PI/(2*a) + Math.PI/(2*(a+1)))/2; //Izračunam ploščino z = Math.sin(t)*dt + z; i = i+1; } return z; } }
Zakaj?
Zgodovina sprememb…
- spremenil: ozbolt ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# - domača nalogaOddelek: Programiranje | 2194 (1735) | IceBoX |
» | [C#] Input string was not in a correct format.Oddelek: Programiranje | 1076 (1013) | Cvenemir |
» | [C#]Analogna uraOddelek: Programiranje | 2724 (2361) | cekr |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3522 (2744) | Tutankhamun |
» | JavaOddelek: Programiranje | 1611 (1509) | LukaVi |