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 i5-14400f rtx 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 i5-14400f rtx 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 | 1763 (1492) | darkolord | 
| » | [JAVA] helpOddelek: Programiranje | 1880 (1594) | keworkian | 
| » | [C++] Kopiranje char arraya v drug char arrayOddelek: Programiranje | 1404 (1275) | win64 | 
| » | [java] system.setproperty xml apis vec implementacij naenkratOddelek: Programiranje | 2841 (2300) | Fizikalko | 
| » | [java] vstavljanje slike v JFrameOddelek: Programiranje | 1420 (1316) | KaRkY |