Forum » Programiranje » Pomoč pri Javi
Pomoč pri Javi
GeForce ::
Sem začetnik v programiranju, in trenutno mi sive lase dela naslednja naloga:"/*Napišite program, ki numerično ovrednoti in izpiše podobnost dveh besed. Za vsako črko,
ki je na istem mestu v obeh besedah, se podobnost poveča za ena. Če imata besedi različno
število znakov, se preverja le toliko znakov, kolikor jih je v krajši besedi.
Primera:
Podobnost besed "lino" in "film" je 1, ker je le črka i na istem mestu v obeh besedah.
Podobnost besed "telefon" in "velikost" je 3 zaradi druge, tretje in šeste črke.*/"
Tole je trenutna koda ki nekako na pol deluje, a zmeraj vrne vrednost 0. Verjamem da gre za kakšno manjšo napako, ampak jaz je nikakor ne dobim?
ki je na istem mestu v obeh besedah, se podobnost poveča za ena. Če imata besedi različno
število znakov, se preverja le toliko znakov, kolikor jih je v krajši besedi.
Primera:
Podobnost besed "lino" in "film" je 1, ker je le črka i na istem mestu v obeh besedah.
Podobnost besed "telefon" in "velikost" je 3 zaradi druge, tretje in šeste črke.*/"
Tole je trenutna koda ki nekako na pol deluje, a zmeraj vrne vrednost 0. Verjamem da gre za kakšno manjšo napako, ampak jaz je nikakor ne dobim?
class Podobno { public static void main (String args[]) { String beseda1 = "telefon"; String beseda2 = "velikost"; char[] beseda3 = beseda1.toCharArray(); char[] beseda4 = beseda2.toCharArray(); int krajsa, i = 0, stetje = 0; krajsa = Math.min(beseda1.length(), beseda2.length()); while (i<krajsa) { if(beseda3[i] == beseda4[i]){ stetje = stetje++; } i++; } System.out.println(stetje); } }
Blinder ::
Ti pravilno izračuna spremenljivko "krajša" ali mogoče tisti math.min ti v tvojem primeru vedno vrže 0?
Lahko da je kej narobe primerjava med dvemi chari z ==. Čepav zgleda uredu
http://www.dreamincode.net/forums/topic...
Pač vstavi print znotraj programa, da ti izpiše vrednost kake spremenljivke, da vidiš kaj se dogaja
Lahko da je kej narobe primerjava med dvemi chari z ==. Čepav zgleda uredu
http://www.dreamincode.net/forums/topic...
Pač vstavi print znotraj programa, da ti izpiše vrednost kake spremenljivke, da vidiš kaj se dogaja
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
Zgodovina sprememb…
- spremenil: Blinder ()
GeForce ::
Spremenljivka "krajsa" se izračua pravilno (v tem primeru 7), nevem pa kako bi drugače primerjal char-a?
garamond ::
Sicer ne znam Jave, ampak tale vrstica je najbolj sumljiva:
stetje = stetje++;Probaj samo
stetje++;
GeForce ::
Sicer ne znam Jave, ampak tale vrstica je najbolj sumljiva:stetje = stetje++;Probaj samostetje++;
Sicer mi ni jasno zakaj, ampak dela?
Se oglasim kmalu z kakšnimi novimi problemi, trenutno pa moram še premisliti kaj je pri temle "haklc".
EDIT:Kje bi lahko še dobil podobne začetniške naloge, da imam navodila kaj naj program izvede, in da potem za to napišem program?
Zgodovina sprememb…
- spremenil: GeForce ()
Marat ::
GeForce ::
Tudi če uporabim
stetje +=stetjemi spet izpisuje le rezultat 0 neglede na ujemanje. Pravilno deluje edino z
stetje++
urosz ::
malo osnov Jave (oz. kar večine programskih jezikov):
to je tak kod ta bi naredil stetje = stetje + stetje (torej nikakor +1)
ko uporabimo stetje++, se priredi prvotna vrednost, šele na to se bo prištelo 1. to pomeni, da si 1 iteracijo "pozen" s prištevanjem
stetje += stetje
to je tak kod ta bi naredil stetje = stetje + stetje (torej nikakor +1)
stetje = stetje++
ko uporabimo stetje++, se priredi prvotna vrednost, šele na to se bo prištelo 1. to pomeni, da si 1 iteracijo "pozen" s prištevanjem
Marat ::
ah, sem šel zdej kodo gledat, itak da je 0, ker sešteva 0+0
EDIT: vidm da je že uroš odgovoril :)
EDIT: vidm da je že uroš odgovoril :)
Zgodovina sprememb…
- spremenil: Marat ()
GeForce ::
malo osnov Jave (oz. kar večine programskih jezikov):
stetje += stetje
to je tak kod ta bi naredil stetje = stetje + stetje (torej nikakor +1)
OK, ta del sedaj zastopim kje sem zaj**al.
stetje = stetje++
ko uporabimo stetje++, se priredi prvotna vrednost, šele na to se bo prištelo 1. to pomeni, da si 1 iteracijo "pozen" s prištevanjem
Tega pa ne razumem ravno...prvič ko gre zanka čez to vrstico, bi kolikor jaz razumem morala začetni vrednosti stetje (=0), prišteti 1, in bi bila potem vrednost spremenljivke stetje = 1. Naslednjič bi tej enki prištelo še +1 in bi bila vrednost 2, itd. Kje narobe razmišljam?
garamond ::
Nič ne razmišljaš narobe, imaš samo napačne podatke -- ker so stvari samo malo bolj zakomplicirane kot je bilo razloženo. Ena razlaga je tukaj: link.
Zdaj pa tudi sam vidim, zakaj Python nima te funkcionalnosti :)
Zdaj pa tudi sam vidim, zakaj Python nima te funkcionalnosti :)
urosz ::
garamond-ov link v redu razloži stvar ;)
je pa možno, da stvar celo deluje v kakšnem drugem programskem jeziku, odvisno seveda tudi od compilerja.. vglavnem izogibaj se tega ;)
je pa možno, da stvar celo deluje v kakšnem drugem programskem jeziku, odvisno seveda tudi od compilerja.. vglavnem izogibaj se tega ;)
GeForce ::
No pa gremo naprej....trenutno se ukvarjam s temle:
sam sem prišel do tegale:
javi mi pa tole:
Napiši program, kjer najprej definiraš statično enodimenzionalno tabelo >>stevila<<, in jo napolniš z vrednostmi od 1 do 6. Ustvari metodo >>izpisiTabelo<<, ki bo s pomočjo zanke izpisala vse vrednosti tabele. Sedaj ustvari metodo, ki bo vrednosti v tabeli povečala za ena in jih izpisala. Pokliči obe metodi.
sam sem prišel do tegale:
class Vaja1 { static int stevila [] = {1,2,3,4,5,6}; int z = stevila.length(); public static void izpisiTabelo () { for (int x = 0; x <= z; x++) { System.out.println(stevila.charAt(x)); } } public static void izpisiTabeloPovecano () { for (int x = 0; x <= z; x++) { System.out.println(stevila.charAt(x) + 1); } } public static void main (String[] args) { izpisiTabelo(); izpisiTabeloPovecano(); } }
javi mi pa tole:
Vaja1.java:3: error: cannot find symbol int z = stevila.length(); ^ symbol: method length() location: variable stevila of type int[] Vaja1.java:6: error: non-static variable z cannot be referenced from a static context for (int x = 0; x <= z; x++) { ^ Vaja1.java:7: error: cannot find symbol System.out.println(stevila.charAt(x)); ^ symbol: method charAt(int) location: variable stevila of type int[] Vaja1.java:11: error: non-static variable z cannot be referenced from a static context for (int x = 0; x <= z; x++) { ^ Vaja1.java:12: error: cannot find symbol System.out.println(stevila.charAt(x) + 1); ^ symbol: method charAt(int) location: variable stevila of type int[] 5 errors
mgermo ::
class Vaja1 { static int stevila [] = {1,2,3,4,5,6}; int z = stevila.length; public static void izpisiTabelo () { for (int x = 0; x < z; x++) { System.out.println(stevila[x]); } } public static void izpisiTabeloPovecano () { for (int x = 0; x < z; x++) { System.out.println(stevila[x] + 1); } } public static void main (String[] args) { izpisiTabelo(); izpisiTabeloPovecano(); } }
Tabela nima charAT.
Zgodovina sprememb…
- spremenilo: mgermo ()
Spura ::
Spremenljivka z ni staticna in jo uporabljas iz staticne funkcije. Zakaj je sploh potrebna?
Spremenljivki z priredis stevila.length(). To je narobe, stevila.length je dolzina arraya.
Do arraya dostopas kot stevila[x] ne pa stevila.charAt(x).
Loope imas narobe. Prvic ne vidim razloga, da loop variabla nima imena i, drugo je pa to, da bos imel
array bounds exception, ker bos zadnjo iteracijo imel System.out.println(stevila.charAt(stevila.length)).
Spremenljivki z priredis stevila.length(). To je narobe, stevila.length je dolzina arraya.
Do arraya dostopas kot stevila[x] ne pa stevila.charAt(x).
Loope imas narobe. Prvic ne vidim razloga, da loop variabla nima imena i, drugo je pa to, da bos imel
array bounds exception, ker bos zadnjo iteracijo imel System.out.println(stevila.charAt(stevila.length)).
GeForce ::
Spremenljivka z ni staticna in jo uporabljas iz staticne funkcije. Zakaj je sploh potrebna?
Spremenljivki z priredis stevila.length(). To je narobe,
?
stevila.length je dolzina arraya.
Ok, to vem, ampak še vedno ne razumem zakaj je narobe da dolžino tabele shranim v spremenljivko?
Loope imas narobe. Prvic ne vidim razloga, da loop variabla nima imena i,
?
drugo je pa to, da bos imel
array bounds exception, ker bos zadnjo iteracijo imel System.out.println(stevila.charAt(stevila.length)).
Tole sem popravil.
Sedaj izgleda takole
class Vaja1 { static int stevila [] = {1,2,3,4,5,6}; public static void izpisiTabelo () { for (int x = 0; x <= stevila.length()-1; x++) { System.out.println(stevila[x]); } } public static void izpisiTabeloPovecano () { for (int x = 0; x <= stevila.length()-1; x++) { System.out.println(stevila[x] + 1); } } public static void main (String[] args) { izpisiTabelo(); izpisiTabeloPovecano(); } }
javi pa mi dve napaki
Vaja1.java:5: error: cannot find symbol for (int x = 0; x <= stevila.length()-1; x++) { ^ symbol: method length() location: variable stevila of type int[] Vaja1.java:10: error: cannot find symbol for (int x = 0; x <= stevila.length()-1; x++) { ^ symbol: method length() location: variable stevila of type int[] 2 errors
GeForce ::
???
A si sploh vido moj post?
Videl, sem na tvoje opozorilo popravil charAt, ampak še vseeno dobim tidve napaki. Tudi če direktno kopiram tvojo kodo, če to sprašuješ:
Vaja2.java:6: error: non-static variable z cannot be referenced from a static context for (int x = 0; x < z; x++) { ^ Vaja2.java:11: error: non-static variable z cannot be referenced from a static context for (int x = 0; x < z; x++) { ^ 2 errors
Sem mogoče kaj zgrešil?
Hvala za pomoč
mgermo ::
Ja, se opravičujem ker sem delal po svoji kodi ki je delala in pol samo na hitro popravil tvojo.
Torej samo static pred z ali pa
torej brez () pri stevila.length
Celotna koda še enkrat:
static int z = stevila.length;
Torej samo static pred z ali pa
for (int x = 0; x <= stevila.length; x++)
torej brez () pri stevila.length
Celotna koda še enkrat:
public class Vaja { static int stevila [] = {1,2,3,4,5,6}; public static void izpisiTabelo () { for (int x = 0; x < stevila.length; x++) { System.out.println(stevila[x]); } } public static void izpisiTabeloPovecano () { for (int x = 0; x < stevila.length; x++) { System.out.println(stevila[x] + 1); } } public static void main (String[] args) { izpisiTabelo(); izpisiTabeloPovecano(); } }
Zgodovina sprememb…
- spremenilo: mgermo ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | branje iz datoteke c#Oddelek: Programiranje | 1648 (1377) | darkolord |
» | [JAVA] helpOddelek: Programiranje | 1656 (1370) | keworkian |
» | [C++] Kopiranje char arraya v drug char arrayOddelek: Programiranje | 1286 (1157) | win64 |
» | [java] system.setproperty xml apis vec implementacij naenkratOddelek: Programiranje | 2702 (2161) | Fizikalko |
» | [java] vstavljanje slike v JFrameOddelek: Programiranje | 1318 (1214) | KaRkY |