- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Sony MILC fényképezőgépcsalád
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- Házimozi belépő szinten
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Fujifilm X
- Apple MacBook
- Napokon belül váratlan versenyzővel bővül a VGA-piac
- HiFi műszaki szemmel - sztereó hangrendszerek
- Tápos kibeszélő offtopik
- Telekom TV SmartBox: szolgáltatói set-top box alacsony korlátokkal
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
BaLinux
tag
nem tudjatok, hogy hogyan lehet lekerdezni a GCtol (akar a kodbol, akar runtime ,,kivulrol'') hogy melyik osztalynak hany peldanya letezik?
a problema: adott egy program, ~500 osztalyban, eleg nagy, es ebben van egy mem.leak. ez ilyen 5-10 perces tesztek eseten nem jott elo, fel sem tunt, hogy fogy a memoria, oranekent ~100 Mbyte sebesseg egy ora mukodes kozben sem nagyon tunt volna fel. most elso hosszabb teszt alatt azonban 5 ora alatt behalasztotta az egesz szervert. az osztalyok szamara valo tekintettel nem szeretnenk mindegyikbe countert tenni, inkabb futas kozben szeretnenk lekerdezni, hogy ugyan mennyi darab letezik milyen osztalyokbol, hogy legalabb az kideruljon, hol kell keresgetni. valami otlet?
[Szerkesztve]Futtasd valami profilerrel, ami tud mem allokációkat naplózni, pl. JProfiler. Abból elég jól ki fog derülni, miből van több mint kéne... Remélhetőleg a referenciákat felesleges módon megtartókat is végig tudod követni vele. Ez így már sokkal többet tud mint hogy mennyi objektum van.

[Szerkesztve] -
BaLinux
tag
-
BaLinux
tag
-
BaLinux
tag
Visual Editor: Bővebben: link
Amúgy kézzel sem nagy cucc, ha kitapasztalod kicsit hogy mit tud. Gyakorlatilag komponensenként max 2-3 sorban beállíthatod a paramétereket, ennyi szokott lenni.
[Szerkesztve] -
BaLinux
tag
eheh hat ez sztem nem tul optimalis megoldas ;)
ime az en otletem:
olvasod az egyik filet, es pakolod bele az elemeket gondolkodas nelkul 1 hashtable-be.
aztan amikor vegeztel elkezded olvasni a masik filet, es minden szora rakeresel a hashtable-ben, ha megtalalod akkor kiirod kimenetre, (es ha csak egyszer kell kiirni akkor torlod a hashtable-bol, ha tobbszor is lehet akkor ez a zarojel targytalan) es olvasol tovabb
ez kb 6 sor amit en most felvazoltam, es szerintem gyorsabb is, es kevesebb memo kell hozza, mint a ket vektoros megoldashoz
szerk: hashtable helyett valamilyen set-szeru dologba megjobb volna, foleg ha hash-alapu, de nem tudom van-e ilyen adatszerkerkezet alapbol az APIban
[Szerkesztve]Gondoltam a HashSet-re, de elvetettem, mert az kezdőknek esetleg kevésbé érthető hogy mért jó az.

Amire gondoltál az a HashSet, ilyen van, rendben. Elvileg a beillesztés/keresés O(1) idejű benne, de pl. telítettség függvénye a konstans szorzó és alapvetően elég nehéz megjósolni. Összességében tehát O(n+m) lépés lenne a HashSetes módszer. A rendezéses módszer garantált O(nlogn)+O(mlogm), meg még min(n,m) lépés.
Attól függ hogy átlagban, vagy legrosszabb esetben hogyan kell teljesítenie az algoritmusnak.
-
BaLinux
tag
Ezzel a két fileban előforduló közös szavak problémájára javasolnék egy normális (értsd hatékony
) algoritmust:
1. mindkét listát beolvasva pl. lexikografikusan rendezed őket egy-egy vektorba, legyenek ezek: v1, v2
2. k=0, j=0
3. do
4. ha v1[k]<v2[j] akkor k++
5. egyébként ha v1[k]>v2[j] akkor j++
6. egyébként nyilvánvalóan v1[k]==v2[j] teljesül tehát találtunk egy közös elemet; k++, j++
7. while k<v1.length && j<v2.length
Az egyező elemeket a 6-os lépésben el lehet tenni egy másik vektorba.
[Szerkesztve] -
BaLinux
tag
Lap, kép, micsoda?
Ha ez valami html+javascript, akkor javaslom a javascriptes topicot, mert ennek a java-hoz semmi köze.
mod: ha arra gondolsz, hogy egy browser-ablakot bezárni, akkor a válaszom az hogy nem teheted meg. Ugyanis ehhez a javascriptnek direkt nincs joga. Nem javascriptből nyitott ablakot egyáltalán nem zárhat be, javascripteset esetleg rákérdezéssel.
[Szerkesztve] -
BaLinux
tag
Tomcat 5.5, ahogy már mondtam és végigzúztam egy keresést a gépen, nem volt ilyen jar. Számomra is érthetetlen. Az SDK meg a már szintén fent említett J2EE SDK 1.4.10 (2005Q1). Ezek vannak fent. Eclipset meg felteszem valószínűleg, csak mostanában nem foglalkoztam java-val. Egyébként a 3.x-es Tomcatban benne van az a jar, onnét bányásztam ki...
De akkor mindjárt lezúzom és visszarakom az egészet, megnézzük, hátha telepítésnél a ''next next next finish'' közben elnéztem valamit
Az ok hogy a Java SDK megvan, én a Tomcat SDK-ra gondoltam. Feltételezvén hogy esetleg van egy verzió mindenféle fejlesztői kiegészítők nélkül, meg van az SDK-s verzió. Elképzelhető, hogy tényleg az installban kell bepipálni valamit.
-
BaLinux
tag
''Egészen biztos vagy benne hogy van a servlet-api.jar-ban javax/servlet könyvár, ugye?''
Nos, nem
A servlet.jar kell nekem, csak az nincs a gépemen. Most így hirtelen rántottam le netről, azzal fordítva úgy tűnik megoldódik, csakhát ez kicsit nem elegáns megoldás...
Én is Eclipseztem, mindaddig, amíg olyan sorokat alá nem huzogatott nekem meg szopatott, hogy nem hajlandó lefordítani, amit parancssorból simán fordítottam. És ezzel hosszú órákat szúrtam el, mire rájöttem, nem bennem van a hiba. NetBeans-szel meg az a bajom, hogy lassú. De igazad van, jó lenne egy IDE. Lehet felteszem a legújabb Eclipse-t, hátha javítottak rajta.Akkor mit töltöttél le, amit apache tomcat néven terjesztettek, és nem volt benne ez a jar? Biztos hogy a megfelelő SDK-t, blabla?
Nem tudom milyen Eclipse-et használtál, én kb 2 éve használom _nagyon_ sokat (2.1-től), és soha nem volt olyan amit egy editorablak-bezár-újranyit művelet nem oldott volna meg. Legrosszabb esetben egy clean project. Ne csináld már
-
BaLinux
tag
classpath-ból kiszedtem most a könyvtárat.
A hibaüzenet egész pontosan a következő:
ElsoServletem.java:2: package javax.servlet does not exist
import javax.servlet.*;
^
utána meg az ebből következő hibaüzenetek.
javac -classpath ''d:\Program files\Apache Software Foundation\Tomcat 5.5\common\servlet-api.jar'' ElsoServletem.java
és így sem szereti...
[Szerkesztve]Egészen biztos vagy benne hogy van a servlet-api.jar-ban javax/servlet könyvár, ugye? Meg hogy pontos az elérési út? Javaslom, hogy inkább mindenhova használj slasht backslash helyett, windóz alatt is. Ha ezek megvannak, akkor érdekes...
Amúgy a mérhetetlen produktivitás növekedés elősegítése érdekében javaslom, hogy használj egy jó IDE-t, és ne parancssorból szerencsétlenkedj. Én az Eclipse IDE-t használom mindenre. Ismerd meg azonnal, ha eddig nem tetted.
[Szerkesztve] -
BaLinux
tag
Valószínű, az lesz amit írtál, gondolom a doksi egy régebbi Tomcathez szól, amiben még úgy volt.
Nos beletettem a CLASSPATH-ba ezeket:
d:\Program files\Apache Software Foundation\Tomcat 5.5\common\;d:\Program files\Apache Software Foundation\Tomcat 5.5\common\servlet-api.jar;d:\Program files\Apache Software Foundation\Tomcat 5.5\common\jsp-api.jar
egyenlőre még nem nagyon érzi át a javac, hogy én szeretnék servletet fordítani. Kell még valamit csinálni ezzel?Jegyezd meg melyik osztállyal van baja a fordításnál, és azt keresd meg a jarokban.
A classpath-ban amúgy 2 féle bejegyzés lehetséges:
- ha könyvtárat adsz meg, akkor az azon belüli összes .class filet figyelembe veszi, rekurzívan, de a jarokat nem!
- jart is megadhatsz, de egyszerre csak egyet.
Tehát az általad megadott ''d:\Program files\Apache Software Foundation\Tomcat 5.5\common\'' nem jó, ha az ottani jar fileokat akartad includeolni. Egyenként fel kell sorolni őket...
Kivétel, ha az egyik jar-ban van olyan manifest.mf, amelyben leírja milyen jarokra van szüksége. Amennyiben azok az ahhoz a könyvtárhoz relatívan megadott elérési úton megvannak, akkor azok a jarok automatikusan includeolódnak, nem kell külön CP-ben megadni. Ez persze rekurzívan működik.
[Szerkesztve] -
BaLinux
tag
Elég rossz kérdés...

Mit jelent itt az, hogy ''hamarabb''? Ha utasításciklusokban mérjük, akkor attól függ milyen gépen fut, ha meg időben mérjük, akkor még az ütemezés is számít.
Válasz: ki tudja. Ja, azt esetleg ki lehetne számítani, hogy adott kezdőfeltételek mellett mennyi valószínűséggel fut le egyik hamarabb mint a másik
Amúgy olyasmire akar kilyukadni, hogy a float és double kivonás között milyen különbség van? Reflexből mondhatnám, hogy a virtuális gép utasítások szintjén a floatos gyorsabb, mert csak 32 bit, kevesebb művelet. Aztán lehet persze, hogy a mai FPU-k ugyanannyi idő alatt végeznek egy float és egy double kivonással.
mod: áá rájöttem hogy mi akar ez lenni: a floatos végtelen ciklus, a double-os nem, ugye?
[Szerkesztve] -
BaLinux
tag
-
BaLinux
tag
Ugyanott megadhatod... ha win-ről beszélünk, akkor TC alatt talán van egy ilyen dialog. Amúgy nem tudom, de reg hackeléssel megtehető.
-
BaLinux
tag
kösz!
hogy miért kell egy fájl?
hát nem úgy egyszerű futtati egy programocskát?
1 db. exe és ennyi, nincs installshield stb, klatty oszt fut.
ezért vagyok ellene a javának, amúgy - suliban ezt erőltetik, elhiszem hogy ez a divat, stb. de talán nem ezzel kéne kezdeni
UI: nem tudom mennyi a jre ''lecsontozva'', de most képzeld el, hogy egy egysoros java progiért becsomagolom a fél vinyómat!![;]](//cdn.rios.hu/dl/s/v1.gif)
jó, persze lehet mondani, a java nem erre való
[Szerkesztve]A Java nem erre való.

Manapság már illik adni kicsit a modularitásra. Értsd, nem teszünk bele mindent egy exe-be statikusan, hanem közös dll-ek, stb.
Ez a ''mindent egybe'' szoftvertervezési módszer... öö... elavult, és a Java meg ilyenek nem ''divat'' kérdése, hanem komoly mérnöki munka és tapasztalat eredménye.
Persze egy beágyazott rendszerbe (autó, hifi, tv) nyilván nem való ez a dolog (még!).
A jre-nek meg van installerje, azt telepíti külön, és örül magának, mert soha többet nem kell megtennie. A saját progidhoz is csinálsz installert, ha már átlagusernek írod, és azzal sem lesz gond.
[Szerkesztve] -
BaLinux
tag
na most légy szíves írd le egy kezdőnek, hogy is csináljak konkrétan futtatható állományt.
a legegyszerűbb eset: kiír egy sort a konzolra, és kész
na most ezt elküldöm valakinek, sima felhasználó, a gépén nincs semmi java, stb. annyit ért hozzá, hogy dupla klikkre indulnak a progik.
tudsz segíteni?
köszi!
UI: ja és lehetőleg 1 fájl legyen - és bekavar-e ha az illető gépén pl. winrar sincs a tömörített állományok kezelésére, vagy ez a jar nem az a jar?
[Szerkesztve]Úgy hogy nincs a gépén Java runtime, nem fog futni Java progi...
1) le kell töltenie (vagy mellékeled) a legfrissebb jre-t.
2) a programodat tetszőleges számú jar fileban beinstallálod egy könyvtárba
3) a link amire duplaklikkel behívja a fent említett parancsot, amivel a progi elindul.
Mért legyen lehetőleg 1 file, nem értem... semmi értelme.
Semmi egyéb program nem kell Java runtimeon kívül, a .jar fileok igaz hogy .zip-ek, de a jre természetesen tudja kezelni magától, semmivel nem kell foglalkozni.
Persze ha már van java-s progija az illetőnek, akkor az egyes pontot nem kell elvégezni. -
BaLinux
tag
JBuilder X Foundationt használok. Ingyenesen letölthető és tanulási célokra használható.
Van is ilyen menüpont, hogy ''Native Executable Builder'' de nem aktív.
Nekem nem is natív fordító kéne, hanem az, hogy lehessen dupla klikkel indítani mint egy normál alkalmazást. Jar-ba sikerült már összeraknom, így legalább nincs húsz osztály, de még mindig csak parancssorból tudom indítani.create ''app.bat'', beleír:
java(w) -jar jarfile
kész
vagy tetszőleges más módon. -
BaLinux
tag
Tsokolom!
Belekukkantottam a temaba, de nem leltem semmit ami a problemamra megoldas lenne:
Nem is problema, inkabb kerdes. Kellene nekem valami okos XML parser, de nem nagyon talaltam olyan leirast, ami kiterne arra, hogy a parser felolvassa az egesz cuccot a memoriaba, vagy pedig streamkent viselkedik. Streames cucc kellene, mert elkepzelheto pl. hogy egy nagyobb video vagy hasonlo binaris adatkupac utazik az xml fileban, es nem lenne igazan hasznos ha felolvasna az egeszet.... ha mar van ilyen akkor a fenenek van kedve megirni
[Szerkesztve]Van egy olyan lib, hogy JDOM. Ez jó. Eddig mindig a SAXBuilder-t használtam, az végigparszolja a memóriában és fát épít belőle, azt mondod hogy ez nem túl jó.
Ezen kívül van a SAXParser, ami nem olvassa fel, hanem egy összetett listener rendszeren keresztül küldözgeti neked az elemeket, így streammel is elboldogul talán.
Videót XML-ben? Állat
Nem lenne értelmesebb egy saját protokoll, ami csomagokra bontja a nagy bináris adatfolyamot, és közötte lehet olyan csomag, hogy ''metaadat'', ami egy xml dokumentum lenne?
A SAXParser természetesen legalább egy elemet mindig teljesen felolvas, sőt nyilván az aktuális elem összes parentjét is meg kell tartania. Így ne gondolj olyanra, hogy 100 megás text adat. Ráadásnak XML-ben binárisat nem tudsz normálisan átvinni, legegyszerűbb a Base64 encode, ami még a méretet is növeli, igaz tömörítéssel részben visszahozhatod azt.
Gondold meg, na. -
BaLinux
tag
Nem, a hosszú sorok Java-ban is szintaktikailag helyesek. Ami nincs: goto, illetve azok a hosszú nevű azonosítók.
Szumma: ez nem java, csak valami zombi/mutáns.
mod: ilyen formában ez egy programrészlet, azok a hosszú azonosítók lehetnek korábban deklarált változók, stb. Mondjuk érdekes az a return ott a közepén. Goto tényleg nincs.
[Szerkesztve] -
BaLinux
tag
Ez gáz, ugyanis nemhogy nem tudok a PH!-n javasolni topicot ennek, hanem az egész rohadt nagy neten nem láttam még soha ilyet, és néhány kulcsszóra google-özve sem találtam semmit, úgyhogy... no comment, sok sikert, engem is érdekel ha jutottál valamire.

Ez így nem Java, annyi biztos. Van köze hozzá a szintaxisnak, de abszolút nem ugyanaz. -
BaLinux
tag
Ezt aprogramrészletet vki elmagyarázná nekem:
_L2:
e = ''\346\376\021\021\346\377\021\021\346\375\021\021\354\000\366\375\000\376\340\001\340]\\\021\360\301\\!\000\034\334O\231Nf\362\017\000\000\022(\321=\365(\345F\361\314\230=\032\340\f\340\002\230\034f\361\377\360F\361\346\360=\r\250\034F\361\252\n=\t(\302\346\361\372\000\270\034\b\302\346\361\000\371\270\034x!F\374\376?=\352\334O\271N\374\000\333\0''.getBytes();
d = ''\346\376\021\021\346\377\021\021\346\374\021\021\346\000\021\021\346\367\021\021\276\210\346\372\252\n\346\373U\005\346\362U\252\347\367\240\000\334O\230\036\273\004(r=\373\267H\267\267\271Z\271K\271z\270\034\250L@A=\375\b\302\313\0''.getBytes();
return;
a_javax_microedition_midlet_MIDlet_static_fld = arg0;
arg1;
a_javax_microedition_lcdui_y_fld;
b = ''\276\210\346\372\252\n\346\373U\005\346\362U\252\347\367\240\000\346\000\003\002\346\374\000>\346\376f9\340?\346\3670\000\334O\230\036\273\025(q=\373\346\000\000\002\346\374`\001\340\001\273\r\346\361\r8\273\n\346\374\324\001\346\361\372\200\273\005\346\361\000\376\273\002\267H\267\267\271Z\271K\271z\270\034\250L@A=\375\b\302\313\000\327P\003\000\362\376$:\362\377&
\376nu=\037F\377tz=\034\346\000\000\000\346\b\000\374\314\000\314\000\346X\006\000\273\027\302\364\262\376\346\360\000\372\000@\273\021\244\000\262\376\b\001@\004=\372\273\013\346X\245\000~\266\232\266\376p\372\000\000\372f\374\377?\372\200d\001\232\267\376p~\267\313\0''.getBytes();
c = ''\346\376\021\021\346\377\021\021\346\374\021\021\346\375\021\021\346\362\021\021\334M\231,\334O\271.\b\341(!=\371\333\0''.getBytes();
if(true) goto _L2; else goto _L1
Öööö... tudod, ez egy Java topic.

Elárulod, hogy ezt honnan szedted? -
BaLinux
tag
Megkérdezhetem, hogyan? Gondolom rájöttél hol hibás a gondolat.
Másrészt viszont ilyen kulcsra való keresést (itt egy String a kulcs) ne Vector-ban, hanem HashMap/HashSet-tel vagy TreeMap/TreeSet-tel csinálj, mert a vector nem erre való. Ugye Vector esetén O(n) az elérési idő, Hash*-nél átlagosan O(1), Tree*-nél garantált O(log n). -
BaLinux
tag
-
BaLinux
tag
-
BaLinux
tag
köszönöm a kielégítő választ

Kérdezhetnék még egy konkrétat is?
1.
Mi a hiba az alábbi forráskódban?
public class Application {
class Vector { double m_x, m_y; Vector(double x, double y) { m_x = x; m_y = y; } }
public static void main (String[] args) { Vector v = new Vector(0.0, 0.0); }
}
Fordítóval kipróbáltam, hogy az a hiba, hogy a class Vector elé kell a static szó.
De miért? nem igazán értem.
2.
Mi a hiba az alábbi forráskódban?
class A { int a;
static class B {
B(int aa) { a = aa; }
}
}
Itt pedig az a hiba, hogy nem kell a static a class B elé. De ennek sem igazán értem a miértjét...
Hálás lennék, ha elmagyaráznád!
Előre is köszi
Nyugodtan

Bár úgy látom, hogy a kérdéseidre kifejtettem már a választ, csak nem pont ezekkel a példákkal... na lássuk:
1. A hiba valóban az, hogy oda kell a static, ugyanis (ahogy már leírtam): tetszőleges osztályban definiált static függvény osztálypéldány nélkül hívható. Ez azt jelenti, hogy nem tud hozzáférni (nem ''látható'' a függvény törzséből) semmilyen nem-static osztályváltozó. A nem-static belső osztályokra ez a szabály azért vonatkozik (tehát nem tud létrehozni olyan belső osztály típusú objektumot), mert a nem-static belső osztályok példányainak alapból rendelkezniük kell referenciával a külső osztályuk (amiben definiáltad a belső osztályt) egy példányára. Méghozzá pontosan arra, amely teremtette őket.
A belső osztály példány referenciája a külsőre úgy néz ki, hogy A.this (ha A a külső osztály neve). Remélem összeállt...
2. két lehetőség: nem kell static a B osztály elé, vagy éppen static kell az int a elé.
A szabály ugyanaz, mint az előbb: mivel a belső osztály statikus, nem kötődik külső oszályhoz, így a belső példány nem is rendelkezik információval (referenciával) az ő bennfoglaló objektumáról, ami ha a staticot eltöröljük, az A osztály egy példánya lenne.
Így a
a = aa;
sorban nem tud hozzáférni az 'a' változóhoz, ugyanis a szimbólumtáblázat látható részében (hogymondják szépen magyarul azt, hogy scope?
) nincs ilyen változó!
Ugye amikor azt írod hogy 'a', ebben az esetben prioritási sorrendben így tud feloldódni a jelentése:
1) lokális blokkban ({ } közötti utasítások) lévő változók
2) szülő blokkban lévők
3) rekurzívan a függvény fejlécig, itt a fgv paraméterek jönnek be
4) osztályváltozók (ez az ami ilyen bonyi szabályokkal írható le, ahogy eddig tettem)
Az utóbbinál az 'a' szimbólum ekvivalens a 'this.a'-val, amennyiben a belső rendelkezik nem-static 'a' nevű változóval; továbbá ekvivalens 'Belsoosztaly.a'-val, ha rendelkezik static 'a' nevű változóval.
Van egy ''5.'' szint, amennyiben egy belső osztályban használt változóról van szó. Ilyenkor az 1-es ponttól oldjuk fel ismét rekurzívan attól a helytől kezdve, ahol az osztályt definiáltad... így lesz az 'a'-ból 'Kulsoosztaly.this.a', ha a belső osztály nem static és a a Kulsoosztaly rendelkezik nem static 'a' változóval, a static szintaxis meg egyenlő a fentivel, tehát a 'Kulsoosztaly.a' static(!) változó mindenhonnan hozzáférhető, akár static, akár nem a belső osztály.
Hmmm... remélem érthető
[Szerkesztve] -
BaLinux
tag
Ez egy picit összetett dolog, biztosan ki is fogok felejteni valamit.
Használat módjai:
- static osztály változók: nem keletkeznek objektumonként, hanem az osztály összes példánya közösen használja a változót
pl.
class A { static int count; A() {count++;} }
esetén minden egyes konstruktorhívásnál inkrementálódik a count.
- static tagfüggvények: az előbbihez kapcsolódik, ugyanis ilyen függvényhez nem tartozik objektum. Ezt úgy értem, hogy a class A { static void fgv() {} } oszály fgv függvénye így hívható: A.fgv(); Természetesen ennél fogva nincs az fgv-ben definiálva ''this'' változó és ezért nem-static osztály változók/függvények sem használhatók, viszont static-kel jelöltek igen. (Persze ha átadsz paraméterben bármilyen objektumot, azzal azt csinálsz amit akarsz.)
- static belső osztályok: olyan osztályon belül definiált osztályok, melyek nem kapcsolódnak a külső osztályhoz példányszinten. Huh, ez bonyi
Na szóval:
class A { static int count; int local; static class B { }}
ilyenkor az A.B osztály példányosítható A-n kívülről. Egyébként nem! Továbbá az A.B osztály nem fér hozzá az A.local változóhoz, de az A.counthoz igen.
Ööö van még valami?!
[Szerkesztve]Kiegészíteném a nem-static belső class-ról mondottakat azzal, hogy példányosíthatóak kívülről, amennyiben a new operátor egy kevéssé szokásos szintaxisát használjuk.
pl. legyen:
class A {
int a;
class B {
void ezmuxik() {
// itt hivatkozunk a kulso osztalyra! Ehelyett irhatunk a++;-t, ha az egyertelmu.
A.this.a++;
}
}
}
Van egy másik osztály, mely ezt csinálja:
class C {
void f() {
// hibas! ''no enclosing instance of A''
new A.B();
// gyartunk egy A-t
A a_peldany=new A();
// explicit megadhato az enclosing instance!
A.B ab_peldany=a_peldany.new B();
}
}
Na kezd teljes lenni a dolog. Remélem érthető. -
BaLinux
tag
Ez egy picit összetett dolog, biztosan ki is fogok felejteni valamit.
Használat módjai:
- static osztály változók: nem keletkeznek objektumonként, hanem az osztály összes példánya közösen használja a változót
pl.
class A { static int count; A() {count++;} }
esetén minden egyes konstruktorhívásnál inkrementálódik a count.
- static tagfüggvények: az előbbihez kapcsolódik, ugyanis ilyen függvényhez nem tartozik objektum. Ezt úgy értem, hogy a class A { static void fgv() {} } oszály fgv függvénye így hívható: A.fgv(); Természetesen ennél fogva nincs az fgv-ben definiálva ''this'' változó és ezért nem-static osztály változók/függvények sem használhatók, viszont static-kel jelöltek igen. (Persze ha átadsz paraméterben bármilyen objektumot, azzal azt csinálsz amit akarsz.)
- static belső osztályok: olyan osztályon belül definiált osztályok, melyek nem kapcsolódnak a külső osztályhoz példányszinten. Huh, ez bonyi
Na szóval:
class A { static int count; int local; static class B { }}
ilyenkor az A.B osztály példányosítható A-n kívülről. Egyébként nem! Továbbá az A.B osztály nem fér hozzá az A.local változóhoz, de az A.counthoz igen.
Ööö van még valami?!
[Szerkesztve] -
BaLinux
tag
Hi!
Azt hittem, hogy így gondoltad a PrintStream konstruktorát, hogy egy OutputStream-et fogad paraméterként. Ezért ezt írtam:
OutputStream out=new OutputStream();
PrintStream printer=new PrintStream(out,false,''852'');
És utána ezt akartam csinálni: printer.print(''aéáéáő'');
Ezek szerint nem így kellett volna.
Korrekt, csak az a kérdésem hogy az out az szerinted minek a kimenete lenne?
Az így lóg magában és megy a szöveg az éterbe, mi? 
Gondoltam vágod, hogy a wrappelendő objektum a System.out vagy System.err, vagy bármilyen létező OutputStream. -
BaLinux
tag
Hi!
Köszi az építő jellegű hozzászólást, de valahogy a Java nem szereti ezt az OutputStream jellegű dolgot, azt írja rá, hogy nem tudja inicializálni, mert nem egy konkrét osztály. Megnéztem, a kontruktora paraméter nélüli, elvileg semmi akadály nincs, hogy létrehozza, de nem tudja mégsem.Ezek szerint nem értetted amire gondolok. Természetesen nem egy OutputStream-et kell létrehoznod, hanem a PrintStreamet!
new PrintStream(System.out, false, ''852'');
Én csak a PrintStream konstruktor paraméterezését vágtam be ide...
mod: megnéztem, az OutputStream osztály absztrakt (és mért ne lenne az, nincs hozzárendelve semmiféle ''kimeneti eszköz'', így natúr), így természetes hogy nem lehet konstruálni. Pontosan mit akartál csinálni?
[Szerkesztve] -
BaLinux
tag
Jah, elcseszett windózos konzol. A System.out-ot (vagy .err-t) wrappeld egy ilyenbe:
PrintStream(OutputStream out, boolean autoFlush, String encoding)
ahol az encoding legyen ''852'' asszem.
Illetve válogathatsz innen: Bővebben: link
-
BaLinux
tag
Megjegyzéseim:
mod: amikor elkezdődik a dőlt szöveg, ott volt egy [ i ]. Lesz több is, de semmi kedvem kijavítani mindenhol
- a Kartya.PIN-t inicializáld a véletlen számmal.
- a Penzintezet.befizet(int osszeg, Szamla szamla) metódusban a szamla.egyenleg+=osszeg; ronda. Elvileg eléred, ha nem private, de akkor is szebb egy szamla.addEgyenleg(osszeg);. Későbbi hülyeségektől menthet meg.
- itt hasonlóan:
public int kivesz(int osszeg, Szamla szamla) {
int kivet;
if (szamla.egyenleg<osszeg) {
kivet=szamla.egyenleg;
szamla.egyenleg=0;
return kivet;
}
szamla.egyenleg-=kivet;
return kivet;
}
(ez kicsit rövidebben is írható, de ez most mind1)
- Itt kezdődnek a problémáid (NullPointerException démon képében):
public void befizet(int osszeg, int szamlaID, String nev) {
for (int i=0; i<=MAX_UGYFEL_SZAM; i++) {
// oops, mért MAX_UGYFEL_SZAM-ig? a tömb tele lehet null-okkal. ráadásul túlindexeled a tömböt eggyel!
if (szamlak.getSzamlaID()==szamlaID) {
if (szamlak.getTulajdonos()==nev) {
szamla.egyenleg+=osszeg;
}
}
}
}
helyesen:
public void befizet(int osszeg, int szamlaID, String nev) {
for (int i=0; i<ugyfelekSzama; i++) {
// ugyfelekSzama használandó, ha már van, és tudod hogy addig nem null a tömb.
// esetlegesen egy if (szamlak!=null) is betehető ide, ha össze-vissza lennének, ami nem igaz.
if (szamlak.getSzamlaID()==szamlaID) {
// használhatnál && operátort, nem muszáj külön ifeket.
if (szamlak.getTulajdonos()==nev) {
// itt sejted mit kommentálnék ismét
szamla.egyenleg+=osszeg;
}
}
}
}
a kivesz(...) metódusra hasonlóan.
- a szamlaletrehoz(...)-ban ugye illene egy allokáció, vagy kapsz egy gigantikus NullPointerExceptiont a fejedbe, mint véres fejdísz.
így: new Szamla(...), aztán azon operálva, majd beletéve a tömbbe. Megint, nem írunk át más osztálybeli adattagokat, ha aranyosak vagyunk.
- Takarekpenztar.szamlaletrehoz(...): felüldefiniálást nem úgy kell feltétlenül érteni, hogy copy-paste-1-sor-módosít.
Meg lehet hívni a felüldefiniált metódust.
pl: {
if (egyenleg==0) return null;
return super.szamlaletrehoz(egyenleg, nev);
}
Amúgy ez a struktúra amit a feladatban kijelölnek, kicsit rossz lenne komoly alkalmazásnál, dehát csak egy feladat.
- public Terminal(String bank) {
// NullPointerException: bankmezo==null
bankmezo.terminalokSzama++;
// intezetNeve: undefined symbol
intezetNeve=bank;
}
- Terminal.kivesz hiány
Ja, ha jól értem itt befejezted. További sok sikert!
Annyival kommentálnám még az egészet, hogy egy valós alkalmazásban megfelelő adatstruktúrákat alkalmaznék (ami itt ellentmond a feladattal, mert tömböket kell használni), ami nem lineáris keresést tud (Hash, Tree). Tudom, tudom, ez a feladat, bocs hogy beszólok.
[Szerkesztve] -
BaLinux
tag
Köszi a segítséget. Egy-két dolog világosabban áll előttem, de sokszor olyan, mintha sötétben tapogatóznék
(nem, most nem vagyok részeg
)
Félig-meddig megcsináltam a gyakorló feladataimat. Ha szépen megkérlek, és ha időd engedi, megnéznéd, hogy miket rontottam el? Fordítani nem is próbáltam, mert még kész sincs, szintaktikai hiba nem érdekel, hanem ''csak'' az elvi hibák.
Itt vannak az általam írt forráskódok: Bővebben: link
És itt maga a feladat: Bővebben: link
Nem azt kérem, hogy old meg helyettem, mert ezek csak a ZH-ra való gyakorlás miatt kerültek kiadásra, semmi pontot, jegyet nem kapok értük. Még mielőtt felháborodna valaki, hogy mással akarom megcsináltatni a feladatomat![;]](//cdn.rios.hu/dl/s/v1.gif)
Tényleg jó lenne, ha megnéznéd, órákon még csak hasonlókat se csináltunk. Ja, hétfőn lesz ZH, úgyhogy ha lehet, addig.
Épp megjöttem egy kis alkoholizálással egybekötött koncertről, épp ideje belenézni a Java topicba

Erre tényleg. Meg is nézem. -
BaLinux
tag
Lehet. Segítségül, ezeket a függvényeket használd.
javax.sound.sampled csomagból:
Audio file betöltés: AudioSystem.getAudioInputStream(File),
Clipre is lesz szükséged: AudioSystem.getClip(),
az AudioInputStreamet benyomod a clipbe: Clip.open(AudioInputStream),
lejátszod: Clip.start() -
BaLinux
tag
Az állításod hamis, ugyanis az int Random.getInt(int szam) függvény a [0; szam) egész-intervallumban, azaz [0; szam-1]-ben ad számokat egyenletes eloszlással.

[Szerkesztve] -
BaLinux
tag
Okok. Köszi mindkettőtöknek! Most seggrészeg vagyok, de holnap kipróbálom, plusz lenne 1 kérdésem, amit most szzóban talán el tudnék mondani, de írásbannn

Hát igen, sokat ittam. Ahogy Pázsit barátom mondaná: aki másnak vermet ás, nem kap rétest estére
Na megpróbálkozok. Itt a feladat: Bővebben: link
3. feladatnál tartok, és a 2. befizet metódussal van problémám.
Ugye a későbbiekben valószínűleg példányosítani fogom a penzintezet osztályzt. És meghívom a befizet metódust. Ezt a 2.-at. Úgy godolom, hogy olyan objektumot kellene keressek, aminek a szamlaID-je megegyezik a paraméterben kapottal. És utána ezen ojjektum egyenleg adattagját kellene változatnom. Hogy lehet ezt? Vagy én gondolom ezt hülyén? Má beszélni (írni) se tudok, de asszem ezt nem értem. Szóval objektumok adattagjaiban kellene keresgéljek, melyiknek egyezik meg a számlaID-je a paraméterben kapottal. Biztos, hogy hülyén gondolkozok, de ezt már ivás előtt se értettem, szóval ez legyen a mentségem
ó éjt, holnap itt... [ OFF]
Részegség, fél egészség

Teljesen jól gondolkozol, csak láss a szöveg mögé: a Szamla osztálynál nem tiltja meg, hogy csinálj egy int getSzamlaID() metódust, amivel lekérdezheted a kívánt adatot. Sőt, egy int getEgyenleg(), void setEgyenleg(int), de még void addToEgyenleg(int) sincs megtiltva. Hajrá!
-
BaLinux
tag
Az ilyen törtekkel mindig az a baj, hogy a ''valós'' számokat csak akkor tárolja pontosan a gép, ha a legnagyobb és legkisebb nem nulla számjeggyel kitöltött helyiérték (negatív, azaz tört kitevőjű helyiértékeket beleértve) között elég kicsi a különbség. Mondhatnám azt is, hogy kettes számrendszerben _véges_ törtként ábrázolható törteket.
Azaz csak a 1/2 1/4 1/8 1/16 ... stb és ezekből véges darab, egymáshoz közel állók összege lesz pontos. Próbáld kirakni az 1/9-et.
Ezt még szorzod egy hasonló pontos számmal, kerekíted, meg se bírom becsülni ebből mi sülhet ki
-
BaLinux
tag
Reflection mondtam hogy advanced topic

Tehát, egyenletes eloszlású int változó [1000; 9999] intervallumban:
int veletlen=Random.nextInt(9000)+1000;
Eszetekbe nem jutott hozzáadni egy számot. Érdekes
-
BaLinux
tag
Jogosan reklamál, ugyanis a
public static void main(String[] args)
függvény a program belépési pontja. Most akkor van ilyen fgv vagy nincs, mert lennie kell. -
BaLinux
tag
Kösz a választ, végre valaki.
Igen, új az OO. Amit te írtál, az nem polimorfizmus?
Nekem mindegyik változó ugyanabba az osztályba tartozik. És mindegyiknek meg akartam változtatni ugyanazt az adattagját. Átírtam én is tömbre, úgy tökéletesen működik, csak ilyen összerakósdira lennék kíváncsi
Nem lehet egy objektum nevét valahogy összerakni stringből?
Mod:Mellesleg van könyvem: Angster Erzsébet-féle
[Szerkesztve]Jóra gondolsz. Akkor máshogy próbálom meg a dolgot

A Java nem scriptnyelv, nem erre való, tudom csak kíváncsi vagy. Ha valamire ilyen megoldást agyaltál ki, gondolj ki mást, mert nagy valószínűséggel rossz módszer.
Ettől függetlenül van kivétel (pl RPC vagy hasonló dolgok implementálása), és ezért van is megoldás minderre. Nézd meg a Java API doksiban a java.lang.reflect csomag tartalmát, mindent tartalmaz ami a nyelvi reflekcióhoz szükséges lehet. Metódusok, konstruktorok, kivételek, tömbök, mindent tud. Advanced topic!
Hogy lássad, kb. ennyiből állna a dolog:
ha van egy Osztaly nevű class-od, annak float function(int) metódusa, és annak egy o1 instance-ja, akkor a következő rész meghívja a függvényt, és a visszatérő értéket is megkapod.
Method m=Osztaly.getMethod(''function'', new Class[] {int.class});
Object ret=m.invoke(o1, new Object[] {new Integer(1)});
float vissza=((Float)ret).floatValue();
Kész. Persze semmi értelme ennek, mert írhatnád ezt is, ez ugyanaz:
float vissza=o1.function(1);
Csak az előbbinél észre se veszed ha elírtad a függvénynevet, vagy bármilyen hibát vétettél, csak futási időben, míg az utóbbinál már fordításnál. A típusbiztonság nagyon fontos a jó programban, úgyhogy törekedni kell rá.
-
BaLinux
tag
Ha így akarod megcsinálni, akkor levonhatom azt a következtetést hogy új neked az OO szemlélet?

Ja, a javascriptnek annyi köze a java-hoz, hogy kb. semmi.
Tehát, van két osztályod, és uazt a metódusát akarod meghívni. Tipikus eset az interface-es absztrakcióra:
interface KozosTudas
{
public void fuggeny();
}
class Osztaly1 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly1'');
}
}
class Osztaly2 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly2'');
}
}
Ezek után valahol vannak ilyen cuccaink:
Osztaly1 o1;
Osztaly2 o2;
Ezek mindketten implementaljak a KozosTudas-t, tehát:
KozosTudas[] tomb=new KozosTudas[2]; //hulye pelda...
tomb[0]=o1; tomb[1]=o2;
for(int k=0; k<tomb.length; k++) {
tomb[k].fuggveny();
}
SZVSZ keress egy tutorialt ilyen temabol, esetleg ajanlok 1-2 konyvet maganban...
szerk: kénytelen voltam a ciklusváltozót k-nak nevezni mer amúgy italic-ba nyomta a fórum az egészet ami az indexelés után van
[Szerkesztve] -
BaLinux
tag
Üdv mindenkinek!
Légyszi segítsetek, mi lehet a baj, mert megőrjít.
Az egyik gépre sehogysem tudom feltelepíteni a Java-t(j2sdk-1_4_2_05-windows-i586-p) XP van rajta. Eddig minden XP-s gépre rá tudtam tenni minden gond nélkül, de az aktuális darab a telepítés közben egyszercsak újraindul és ''a rendszer súlyos hiba után állt helyre'' üzenetet adja. Ha a netről telepítem ugyanez a szitu. Mitől lehet ez?
Köszi:
poro
[Szerkesztve]Ez a WinXP vs Java elég vicces tud lenni...

Volt már olyan bug, hogy ATI videókártyákkal kifagyott. Esetleg 1.5.0-t nem próbáltad? -
BaLinux
tag
-
BaLinux
tag
Így van. Ha ''nagyon átlaguserrel'' van dolgod, úgyis készítesz installert, ami beállítja az egészet, tehát bármennyi dolgot kell beállítani, nem számít.

Ja igen, a .jar egy .zip átnevezve, érdemes tudni, nem valami spéci formátum. -
BaLinux
tag
kösz
hogy minek? csak elméleti kérdés volt, tényleg most ismerkedek vele, hogy egyáltalán mi ez, és mit tud.
tudom, hogy ez is láma de:
általában egy htm fájlba ágyazzák be, és a böngésző futtatja, már ha van JVM?
gondolom az átlaguser nem parancssorból fogja a java.exe-vel futtatni a .class-tAz appletek eléggé speciális kis java osztályok, tehát általában még nem is az applet-írás a Java fő profilja. Kétségtelenül praktikus, viszont spec. én eddig 1 appletet se írtam, de számos standalone applikációt.
Átlaguser valóban nem úgy indítja, hogy kikeresi a main osztályodat, és java -cp classpath bla.bla.bla.osztaly
A .jar fileok arra valók, hogy abba becsomagolva a lefordított class-aidat és egy kis meta-információt (mit kell indítani benne pl), egyszerűen el lehessen indítani, leginkább duplakatt .jar-ra, ami azt csinálja hogy: java -jar jarfile
A legjobb megoldás mégiscsak valami script (.bat), ami - ha bonyolult classpath és egyéb beállításaid vannak - megkíméli a usert mindentől. Akár írhatsz is egy kis c(++) progit ami egyszerűen elindítja a java progit. -
BaLinux
tag
Nincs olyan ami konkrétan .exe-t készít, csak linux/unixra létezik free compiler (gcj), ami elég korlátozott még, az GUI osztályok még nincsenek támogatva, meg béta persze, viszont tényleg natív futtatható állományt készít.
Kérdés: minek neked ilyen egyáltalán? -
BaLinux
tag
Mobilokra IS lehet programot írni, igaz az egy nagyon szűk részhalmaza a ''teljes'' változatnak (standard edition), amit pl. PCre használunk.
Letölteni... a mobilosat? Az nehezebb ügy mert minden mobilgyártónak van egy saját kis szabványa, így legjobb ha a gyártó honlapján keresed. A standard editiont pedig mondjuk java.sun.com. -
BaLinux
tag
Hogyan lehet Javaban meghatározni, hogy egy file hány sorból áll? Talán végig kell olvasni, és számolni a sorvégeket? Vagy csak soronkén olvasni, és figyelni, hogy mikor dob exceptiont?
mod: a progiban BufferedReaderrel, soronként olvasom, és nem ott száll el, ahol olvasom n soros file-nél az n+1. sort, hanem csak ott ahol hivatkozok rá. Ebből nem lehet valamit kihozni?
[Szerkesztve]Hát nem értem teljesen a mod részben leírtakat, ha kóddal alátámasztanád, egyszerűbb lenne javítani. BufferedReader hol száll el? Mért? Az exception mechanizmust nem illik/érdemes arra használni, hogy a programod normális lefolyásában vezérlőszerkezet legyen, hanem amire való: kivételes állapotot (amivel az a metódus nem tud mit kezdeni) jelezni és stacken feldobni.
Amúgy a megoldás kb ennyi:
int lines=0;
while(bufferedreader.readLine()!=null) lines++;
// lines-ban van a sorok száma
-
BaLinux
tag
-
BaLinux
tag
Használj free sun-os JRE-t (java.sun.com), és Eclipse IDE-t (www.eclipse.org). Mindkettő ingyenes, és nagyon minőségi termék. Eclipse-ben meg alapból nincs visual editor, ami nagyon előnyös, ha Java-t akarsz _tanulni_, nem gányolni,
Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- HP EliteBook 640 G11 Core Ultra 5 125U 16GB 512TB FHD 1 év gar
- Samsung Galaxy A52s 5G 128 GB független Számla + Garancia
- HP EliteBook 640 G11 Core Ultra 5 125U 32GB 1TB FHD 1 év gar
- AMD félkonfig eladó - Ryzen 7 5700X+32GB RAM+ASUS B550M
- LAPTOP felvásárlás, azonnali készpénzes kifizetéssel! 0-24-ig! MINDEN TIPUS!
- Lenovo ThinkPad T14 Gen2 Intel i5-1135G7 Refurbished - Garancia
- Lenovo X1 Carbon G11 Core i5 1335U 16Gb Ram 256Gb NVMe Touch Gyári Lenovo Garanciás
- LG 34WR50QK-B VA Monitor! 3440x1440 / 100Hz / 5ms / FreeSync / sRGB 99%
- BESZÁMÍTÁS! Microsoft XBOX Series S 512GB játékkonzol extra kontroller garanciával hibátlan
- HIBÁTLAN iPhone 17 Pro 256GB White Titanium -2 ÉV GARANCIA -Kártyafüggetlen, MS5608, 100% AKKSI
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





![;]](http://cdn.rios.hu/dl/s/v1.gif)

\376nu=\037F\377tz=\034\346\000\000\000\346\b\000\374\314\000\314\000\346X\006\000\273\027\302\364\262\376\346\360\000\372\000@\273\021\244\000\262\376\b\001@\004=\372\273\013\346X\245\000~\266\232\266\376p\372\000\000\372f\374\377?\372\200d\001\232\267\376p~\267\313\0''.getBytes();








