» »

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?

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

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

garamond je izjavil:

Sicer ne znam Jave, ampak tale vrstica je najbolj sumljiva:
stetje = stetje++;
Probaj samo
stetje++;

Sicer mi ni jasno zakaj, ampak dela? :O
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 je izjavil:

garamond je izjavil:

Sicer ne znam Jave, ampak tale vrstica je najbolj sumljiva:
stetje = stetje++;
Probaj samo
stetje++;

Sicer mi ni jasno zakaj, ampak dela? :O


Če si že hotel uporabiti enačaj bi mislim da bila bolj pravilna ta varianta:

stetje += stetje;

GeForce ::

Tudi če uporabim
stetje +=stetje
mi spet izpisuje le rezultat 0 neglede na ujemanje. Pravilno deluje edino z
stetje++
:|

urosz ::

malo osnov Jave (oz. kar večine programskih jezikov):

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

Zgodovina sprememb…

  • spremenil: Marat ()

GeForce ::

urosz je izjavil:

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.

urosz je izjavil:

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

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

GeForce ::

No pa gremo naprej....trenutno se ukvarjam s temle:
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)).

GeForce ::

Spura je izjavil:

Spremenljivka z ni staticna in jo uporabljas iz staticne funkcije. Zakaj je sploh potrebna?
Spremenljivki z priredis stevila.length(). To je narobe,

?

Spura je izjavil:

stevila.length je dolzina arraya.

Ok, to vem, ampak še vedno ne razumem zakaj je narobe da dolžino tabele shranim v spremenljivko?

Spura je izjavil:

Loope imas narobe. Prvic ne vidim razloga, da loop variabla nima imena i,

?

Spura je izjavil:


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

mgermo ::

???
A si sploh vido moj post?

GeForce ::

mgermo je izjavil:

???
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? :8)

Hvala za pomoč

mgermo ::

Ja, se opravičujem ker sem delal po svoji kodi ki je delala in pol samo na hitro popravil tvojo.
 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 ...

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

branje iz datoteke c#

Oddelek: Programiranje
141641 (1370) darkolord
»

[JAVA] help

Oddelek: Programiranje
141634 (1348) keworkian
»

[C++] Kopiranje char arraya v drug char array

Oddelek: Programiranje
71271 (1142) win64
»

[java] system.setproperty xml apis vec implementacij naenkrat

Oddelek: Programiranje
52691 (2150) Fizikalko
»

[java] vstavljanje slike v JFrame

Oddelek: Programiranje
71309 (1205) KaRkY

Več podobnih tem