Hirdetés

2024. április 23., kedd

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#901) sekli válasza loszerafin (#892) üzenetére


sekli
addikt

:) loni meg nekem se sikerult...:) a lenyeget szerintem lattad egyebkent, marmint ami a grafikat illeti..., igazabol nem akartam nagyon belemenni, csak nekem azt tunt fol, hogy ha VisualBasic-ben irnek egy hasonlot (ahogy irtam is) es sokkal kevesebb eroforrast hasznal, a programozoja azt mondta, hogy a ''grafika'' itt az eroforrashasznalat, processzorido 90%-a..., a szimulacio, azert nem annyira komplex... a kerdesem igazabol arra iranyult, hogy a java ennyire lassu-e a megjelenitesben...? most kezdte el fejleszteni a fejleszto a 3D-s verziot, (az en modellem alapjan) es azt igeri, hogy a GPU rendereles miatt jobban fog futni..., ez egyebkent hiheto is... koszi, hogy foglalkoztal vele..., ahogy nezem mondjuk nem lettel fuggo...:)

(#902) loszerafin válasza shev7 (#900) üzenetére


loszerafin
senior tag

Khm. Bocs, hülyeséget írtam. De legalább most, hogy rákérdeztél, magam is rájöttem.

Tehát javítom magam:


Nem tűnik el se a forrásfájlból (hiszen ez az értelme),
se a lefordított kódból (sajnos), hiszen a java futtatót kell paraméterezni az assertion-ök ki/bekapcsolásához.

Viszont nagyon kényelmesen kezelhető (parancssorból ki/bekapcsolható), osztályokra és csomagkönyvtárakra külön-külön, és nem lassítja a kódot, ha nincs bekapcsolva.


(#903) robisz válasza loszerafin (#902) üzenetére


robisz
senior tag

Ugyanezt el tudod érni a Logger-ból is, hiszen vannak loglevelek amiket be tudsz állítani :)
Pl. a kódba azt írod hogy:

log.debug(message);

Így a loglevel-t debug-ra állítva megjelenik az üzenet, de pl. info-ra állítva nem.

Az assert szintén debug-olásra használható, de nem logolásra!!
Arra találták ki, hogy olyan logikai állításokat helyez el a kódban, amelynek
az adott ponton teljesülnie kell. Ha mégsem akkor az kivált egy exception-t.
Amire Te használod, az ugyan működik, de nem szép mert nem erre találták ki.

(#904) loszerafin válasza sekli (#901) üzenetére


loszerafin
senior tag

Találtam ilyeneket:
java -Xrunhprof:cpu=times <program>

és
java -Xprof <program>

Részletes táblázatokat ad a futási időről.
Még nem világosak az adatok számomra, de ígéretes. Esetleg próbáld ki.

(#905) Forest_roby válasza loszerafin (#898) üzenetére


Forest_roby
őstag

Tudom, hogy én írtam későn! Nem hibáztattam senkit, maximum magamat.

Mindenesetre köszi ezeket a linkeket! :R

-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D

(#906) loszerafin


loszerafin
senior tag

for ciklus

Nem fér a fejembe a for ciklus indító részének első tagja, a deklarációs rész:

for(int i=0; i<10; i++){
}

Félkövérrel szedtem a kérdéses részt. Itt ugye lehet több lokális változót deklarálni és inicializálni, ami csak a cikluson belül lesz elérhető, így:

for(int i=0, j=0, k=0; i<10; i++){ ...

Nem csak int lehet ott, hanem bármi, amin végig lehet lépkedni:

for(byte i=0, j=0, k=0; i<10; i++){ ...

Ami nekem furcsa, hogy keverni nem lehet a típusokat, azaz ez már nem megy:

for(int i=0, byte j=0, short k=0; i<10; i++){...

De még csak ez se fordul le:

for(int i=0, int j=0, int k=0; i<10; i++){...

Nem értem, miért ez a megszorítás? Miért jó,hogy csak ugyanolyan típusú változókat deklarálhatok és inicializálhatok? (Ráadásul a doksikban se igen találtam erre utalást:
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.1)

Előre is köszönöm
KL

(#907) robisz válasza loszerafin (#906) üzenetére


robisz
senior tag

A for ciklus általános szintaxisa:

for (kifejezés1; kifejezés2; kifejezés3) {
...
}


Tehát három tetszőleges kifejezést kell megadni (lehet üres kifejezés is).
Viszont a Java-ban nem tudsz egy kifejezéssel különböző típusú referenciákat
létrehozni, tehát az alábbi deklaráció nem csak a for ciklusban, hanem mindenhol hibás:

int i = 0, byte j = 0;

Pontosvesszővel elválasztva már jó de így már két kifejezésnek számít:

int i = 0; byte j=0;

Azonos típusú változóból viszont többet is létrehozhatsz egy deklarációval:

int i = 0, j=0;

Ezt tehát nyugodtan beírhatod a kifejezés1 helyére.

(#908) loszerafin válasza robisz (#907) üzenetére


loszerafin
senior tag

Viszont a Java-ban nem tudsz egy kifejezéssel különböző típusú referenciákat
létrehozni,


Köszönöm, érthető volt a magyarázatod.


[Szerkesztve]

(#909) loszerafin


loszerafin
senior tag

Most, hogy másodszor/harmadszor olvasom el a Java könyvemet, ''újabb'' érdekességekre bukkanok...

StringBuilder equals metódus

Úgy látom, nincs felülírva a StringBuilder osztályban az equals.

Akkor így szoktak két StringBuilder-t összehasonlítan?:

StringBuilder s1 = new StringBuilder(''Hello'');
StringBuilder s2 = new StringBuilder(''Hello'');

System.out.println(s1.toString().equals(s2.toString()));


És tudja valaki, miért nincs az equals felülírva a StringBuilder osztályban?

Előre is köszönöm
KL

(#910) shev7 válasza loszerafin (#909) üzenetére


shev7
veterán

hat mondjuk erre kezenfekvo valasz az, hogy egyreszt nem egyertelmu mikor egyezik meg ket StringBuilder objektum (marmint tobbfele megkozelites is elkepzelheto), illetve, hogy nagyon ritkan hasonlitasz ossze ket stringbuilder objektumot, ami sokkal inkabb elkepzelheto az az, hogy egy Stringhez hasonlitod.

De barmikor kiterjesztheted a StringBuildert, es akkor ugy mukodik az equals, ahogyan csak szeretned :)

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#911) loszerafin válasza shev7 (#910) üzenetére


loszerafin
senior tag

Köszönöm a választ.

...ami sokkal inkabb elkepzelheto az az, hogy egy Stringhez hasonlitod

Igen, ez megy:
StringBuilder s1 = new StringBuilder(''Hello'');
String s = new String(''Hello'');

System.out.println(s.equals(s1.toString()));


Bár itt is Stringgé kell alakítani, kissé ügyetlennek tartom ezt.
Vagy akkor ez lehet a gyakori:
System.out.println(''Hello''.equals(s1.toString()));

(#912) loszerafin


loszerafin
senior tag

Csak nyavajgás következik...

Ahogy egyre jobban elmerülök a Java-ban, egyre nehezebbnek tartom.

Ez az auto boxing/widening témakör kemény dió.

A témakörök:
1. értékadások
2. overload-olt metódusok hívása (mikor, melyik hívódik)
3. == vizsgálat
4. switch - case
5. és még ki tudja, hány témakör van

Pl. a switch-nél most olvastam:
class Proba {
final static int i = 2;
final static Integer I = 3;
public static void main(String[] args){
int x = 2;
switch (x){
case i : System.out.println(x);
case I : System.out.println(x);
}
}
}


Hogy semmilyen wrapper osztály nem lehet a case-ben, akkor se, ha final. Pedig ugye a wrapperek immutable-ek, úgyhogy nem tudnám megváltoztatni az értékét a referencia változtatása nélkül.

(#913) Fisha válasza loszerafin (#912) üzenetére


Fisha
őstag

Megmondom oszinten nekem a switch-case eleve egy nyelvidegen dolog. Mar leirva is rosszul nez ki. :)

(#914) robisz válasza Fisha (#913) üzenetére


robisz
senior tag

Akkor képzelj el egy if-et 30 darabb else ággal és máris jobban fog tetszeni :DDD
Ráadásul ez még hatékonyabb is!!

(#915) shev7 válasza robisz (#914) üzenetére


shev7
veterán

en meg azt mondom mindegyiknek meg van a maga szerepe :)

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#916) Fisha válasza robisz (#914) üzenetére


Fisha
őstag

Jo-jo. Persze en se azt mondom, hogy tiltsak be. Egyebkent nekem egy nagy if semmivel sem kevesbe attekintheto mint egy case, de hat izlesek es pofonok. Meg ezeket nagy if (vagy case) elagazasokat kicsit gondosabb tervezessel ki lehet kuszobolni.

(#917) loszerafin válasza Fisha (#916) üzenetére


loszerafin
senior tag

ezeket nagy if (vagy case) elagazasokat kicsit gondosabb tervezessel ki lehet kuszobolni.

Bizony így van. Szerintem 6-8 case -nél többet inkább adatszerkezettel (tömb, hash) érdemes megcsinálni. Karbantartani is könnyebb, meg a kód is rövidebb.

Egyébként visszatérve a Java-hoz, szerintem ez a fajta case ügyetlen.
A falra tudnék mászni a fall-through tulajdonságától meg mert nem lehet ilyeneket írni:

case 1..10
vagy
case 1,2,3
vagy case (i>10)
stb.

Persze, valószínűleg épp ezért (1,2,3 és 1..10 hiánya miatt) kell a fall-through tulajdonság, mert így ilyeneket lehet írni:
case 1:
case 2:
case 3: System.out.println(''1..3''); break;

De ez azért eléggé ronda egy kódban. Szerintem.
KL

(#918) shev7 válasza loszerafin (#917) üzenetére


shev7
veterán

ha jol tudom a switch case szerkezet egy goto-nak fele meg. Ezert van az, hogy nem lehet felsorolni a case utan tobb erteket, mivel akkor nem stimmelne a label. Es ezert van az, hogy kell a break, mert goto utan a kovetkezo sorban folytatod. Persze biztos meg lehetett volna oldani maskepp, de az nagy valoszinuseggel lassabb lett volna.

mod: Ha megnezzuk a C# fele switch megvalositast, akkor az annyibol kezdo-baratabb, hogy muszaj kitenni a break-et, ezert nem is nezheted be a fall-through-t

[Szerkesztve]

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#919) Fisha válasza loszerafin (#917) üzenetére


Fisha
őstag

Hat igen, en pont ezek miatt a dolgok miatt, vettem ki a szotarambol. :)

(#920) BlackFoxL


BlackFoxL
csendes tag

Szevasztok!Ha esetleg erdekelne vkit eladnam ezt a ket konyvet:

Objektumorientalt tervezes es programozas JAVA 1. es 2. kotet!

1.kotet: Bevezets a programozasba + objektumorientalt paradigma + JAVA kornyezet + JAVA programozasi alapok + osztalyok hasznalata es keszitese + Kontenerek

http://www.laptop.hu/index.php?main=main&page=rovat&rovatid=108&action=
show&cikkid=294&mode=szakkonyv

2.kotet: objektumorientalt technikak + grafikus felhasznaloi interfesz + Allomanykezeles + Vegyes technologiak + Adatszerkezetek es kollekciok

http://www.laptop.hu/index.php?main=main&page=rovat&rovatid=108&action=
show&cikkid=295&mode=szakkonyv

[Szerkesztve]

//CrimsonX

(#921) almi


almi
senior tag

Sziasztok!

Valakinek nincs véletlen megírva Java-ban egy egyszerű stratégiai játék?Ilyesmi a feladat : Tetszőleges méretű tábla, és vannak rajta nyilasok (leghátul) dárdások és lovasok tetszőleges számban.Ezek szépen mehetnek minden irányba amerre irányítjuk, és támadhatják egymást.
Ha valakinek netán van hasonló, akkor legyen szives segítsen :R

Köszi
Üdv.

(#922) loszerafin válasza almi (#921) üzenetére


loszerafin
senior tag

Keress rá a sourceforge.net en meg a freshmeat.net-en.
Ha pont ilyen nincs, akkor is találhatsz egy csomó játék-író környezetet, van, amelyik kifejezetten táblás játékok írásához készült.


[Szerkesztve]

(#923) almi válasza loszerafin (#922) üzenetére


almi
senior tag

:R Köszönöm szépen, hátha segít valamit..

(#924) jeri válasza loszerafin (#844) üzenetére


jeri
tag

C és társai érték szerint
meg létezik:címszerint,eredmény-érték szerint,visszatérési érték szerint.

(#925) Sianis


Sianis
addikt

Nagy láma kérdés:

Ha szedtem le jar fájlokat a netről, akkor azokat hova kell bemásolnom, hogy a fejlesztőkörnyezet is megtalálja azokat?

Köszi a válasz

Sianis

(#926) shev7 válasza Sianis (#925) üzenetére


shev7
veterán

hozza kell adnod a project libraryhoz, majd o bemasolja maganak buildnel. (Legalabbis az eclipse es a netbeans biztosan)

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#927) Sianis válasza shev7 (#926) üzenetére


Sianis
addikt

Hála a magasságos NetBeans-nek! :)

Sianis

(#928) Sianis


Sianis
addikt

Még egy kérdés:

Létezik, hogy SE-ben nincs benne a javax.mail csomag?

[link]

Sianis

(#929) -=V3rthil=-


-=V3rthil=-
őstag

Hello!

Egy elég láma kérdésem lenne. Azt szeretném megtudni, hogy hogy kell egy backing beanben eltárolni egy paramétert úgy, hogy később is lássam. A konkrét probléma: van egy login.jsp és hozzá egy login.java. A login oldalon beírod a felhasználónevet / jelszót, ami innen átdob egy nyitóoldalra, mondjuk welcome.jsp. A welcome oldal backing beanjében request paraméterként megkapom mondjuk az aktuális user objektumot, ami egy entity. Innen linkekkel átmegyek másik oldalra, majd visszatérek. Mivel csak request paraméter volt a user, a visszatéréskor már nincs meg. Azt szeretném, hogy megmaradjon:). A rendszerbe nyilván egyszerre többen is beléphetnek, tehát mindenkinek a saját user-ét kéne eltárolni. Hú, ez gondolom most nagyon nem összeszedett, amit kérdeztem:). Bocsánat, annyira nem vagyok otthon j2ee-ben... De nagyon megköszönném, ha tudnátok segíteni vagy mondjuk linket adni, hogy hol van ez leírva rendesen.

Előre is kösz!

hey-ho-let's-go

(#930) shev7 válasza Sianis (#928) üzenetére


shev7
veterán

marmint a java se-ben? :)

persze, ugy tudom a javax-es csomagokat mind kulon kell letolteni.

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#931) shev7 válasza -=V3rthil=- (#929) üzenetére


shev7
veterán

request helyett sessionbe rakd, akkor megmarad.

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#932) Sianis válasza shev7 (#930) üzenetére


Sianis
addikt

Jaja, egy adag kutakodás után meg is találtam ami nekem kell! :)

Sianis

(#933) Zulfaim


Zulfaim
csendes tag

Honnan érdemes elkezdeni Java-t tanulni?
Valaki tud esetleg valami jó könyvet?

(#934) Zulfaim


Zulfaim
csendes tag

Mi jövő félévben fogjuk tanulni(BME), nem akarok 0-ról kezdeni.

(#935) Sianis válasza Zulfaim (#933) üzenetére


Sianis
addikt

Ha megy az angol akkor ez: [link]

Sianis

(#936) Zulfaim válasza Sianis (#935) üzenetére


Zulfaim
csendes tag

Jól le vannak írva a dolgok.
Köszi.

(#937) Boolash


Boolash
aktív tag

Sziasztok!
Pacman játékot szeretnék írni (java), és el is kezdtem meg minden, felrajzoltam a pályát, ütközött a falakkal a játékos... de eléggé csúnya volt a kód és pl azt már nem tudtam beletenni, hogy az ellenféllel ütközzön :(
Elkezdtem előről az egészet szépen model-view-controllerben megírni, de egy kicsit puskáztam is. De sajna még nincs kész és nekem még ma este kellene nagyon!!! :( Itt vannak a források : [link]
A pálya, a játékos megvan (de valamiért nem fordul). Ami nagyon (mindenképp kellene) az az ellenfél (aki valahogy felém mozog), akihez ha hozzáérek akkor game over. Sajnos nagyon szorít az idő, és én ezt nem tudnám holnapra megcsinálni, ezért is kérem a segítségeteket!
Köszi előre is

(#938) Boolash válasza Boolash (#937) üzenetére


Boolash
aktív tag

oks:) sikerült a hibát megtalálnom:) Azthiszem meglesz :)

(#939) Spyx


Spyx
tag

Hi allz!

Régóta programozom java-ban. Elsősorban kötelezőprogramokat.
Most viszont egy ablakos rendszert kellene készítenem. Milyen konténert ajánlanátok amiben tudok rajzolni könnyen vonalakat és pontokat, AWT-t vagy Swing-et használjak és abból is mi az ajánlott a rajzoláshoz.

Előre is köszi.

Gyötrődő halálos játék: élet! Tőled én még mit kívánnék?!...

(#940) robisz válasza Spyx (#939) üzenetére


robisz
senior tag

Helló!

Érdemes Swinget használni mert az AWT-nek meglehetősen korlátozottak a lehetőségei,
viszont maga a Swing is az AWT-re épül így nem árt mindkettőt megtanulni :)

Amit Te szeretnél azt a következőképpen lehet megcsinálni:

-Létrehozol egy saját komponenst a JComponent-ből való származtatással.
-Felüldefiniálod a paintComponent(Graphics g) metódust. Ebben a metódusban
kell lekódolni a rajzolást.
-Rajzolni a Graphics2D objektum megfelelő metódusaival tudsz (pl drawLine).

Érdemes elolvasni a Java tutorial ide vonatkozó fejezeteit: [link] [link]

(#941) Spyx válasza robisz (#940) üzenetére


Spyx
tag

Hali
Hát igazából már megoldottam egy kicsit butábban. Eclipse-hez installált Visual Editorral létrehoztam egy Application-t amibe egy Jframe majd ebbe egy Jpanel van ültetve. Ezt mint legenerálta nekem.
Aztán elkérem a jPanel Graphics-át és azzal ki tudom rajzolni azt a pár négyzetet meg vonalat amire szükségem van.

Amúgy kössz a segítséget. Ahogy elnézem kb arra jöttem rá ami a második tutorialban van

Üdv.

Gyötrődő halálos játék: élet! Tőled én még mit kívánnék?!...

(#942) robisz válasza Spyx (#941) üzenetére


robisz
senior tag

Igen, saját komponens készítéséhez a JPanel is ugyanolyan jó.
A JFrame-t nem irtam, mert az alap, minden Swing-es alkalmazáshoz kell :B

(#943) Sianis


Sianis
addikt

Sziasztok!

Csináltam egy osztályt, aminek a következő adattagjai vannak:

private String HostName;
private int Port;
private String UserName;
private char[] Password;


Ezeket kimentem egy fájlba. Hogyan fogok tudni őket visszaolvasni? Azt szeretném, hogy eredményként egy tömb jöjjön létre, amiben ezek az adattagok lesznek beolvasva. Köszi a segítséget!

Sianis

(#944) shev7 válasza Sianis (#943) üzenetére


shev7
veterán

Ha az osztaly implementalja a Serializable interfeszt, akkor ObjectOutputStream-mel konnyen ki tudod irni fileba, illetve ObjectInputStream-mel ugyanilyen egyszeruen visszaolvasod.

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#945) Sianis válasza shev7 (#944) üzenetére


Sianis
addikt

Erre felhívta a figyelmemet a NetBeans. Akkor már magánál a visszaolvasásnál szúrok el valamit.

Köszi!

Sianis

(#946) shev7 válasza Sianis (#945) üzenetére


shev7
veterán

ezt nezted mar?

[link]

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#947) Sianis válasza shev7 (#946) üzenetére


Sianis
addikt

Klasszul megy a dolog. Már csak arra kell rávennem a progit, hogy:

- Ne írja felül a fájlban lévő adatokat.

- A teljes fájlt be lehessen hozni egy tömbbe


Sianis

(#948) Sianis válasza Sianis (#947) üzenetére


Sianis
addikt

Egy kis fejlemény, mostmár nem írja felül a fájlt a rendszer. Viszont kiolvasni nem tudom, csak a legelső objektumot. Ez miért van?

Sianis

(#949) shev7 válasza Sianis (#947) üzenetére


shev7
veterán

''- Ne írja felül a fájlban lévő adatokat.''

Ez legjobb tudomasom szerint nem fog menni. Mikor beirod fileba akkor elotte egyebb infok is bekerulnek, nem csak a konkret tartalma a valtozoknak. Ha appendelsz a filehoz azt nem fogja szeretni. Nagy valoszinuseggel csak az elso iras adatait tudod behozni.

Ket megoldas:
- mindig a teljes tombot irod ki/olvasod be
- sajat iro/olvaso modszert talalsz ki.

''Gee, Brain, what do you want to do tonight?'' ''The same thing we do every night, Pinky: Try to take over the world!''

(#950) loszerafin válasza Sianis (#948) üzenetére


loszerafin
senior tag

A Serialization-nal baj van akkor is, ha változtatod a class-t, aminek objektumát kiírod, ugyanis van saját verziókezelése.

Azaz kiírod az objektumot, változtatod a class-t és már nem fogja beolvasni.
(Valójában be lehet, de trükközni kell)

Ha tömböt akarsz kiírni, akkor olyan osztály-t hozz létre, aminek a tömb az egyik field-je.

Ha több állapotot akarsz kiírni akkor használj különböző fájlneveket, pl. kiírás időpontja legyen a fájl neve.



Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.