- AMD Navi Radeon™ RX 9xxx sorozat
- Azonnali notebookos kérdések órája
- Nyaralás előtti hardverszemle
- Teljesen az AI-ra fókuszál az új AMD Instinct sorozat
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen egeret válasszak?
- AMD Navi Radeon™ RX 6xxx sorozat
- Milyen videókártyát?
- Melyik tápegységet vegyem?
Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
Ablakos #12154 üzenetére
Valószínűleg azért találja meg a második megoldásod, mert ott explicite kikötöd neki, hogy az src-ben keresse a fájlt, és ugyanezen okból hiszem azt, hogy az az
Excluded: resources/
lesz a ludas.Ugyanis ezzel azt mondod az ecplise compilerének, hogy a resources mappát hagyja figyelmen kívül, ne tegye át a bin alá, és amikor futtatod, valószínűleg a kódod a bin-ben keresi a fájlt. Töröld azt az exclusiont, ellenőrizd, hogy átkerültek-e a fájlok a bin-be a fordítás során, és hogy működik-e immáron az első megoldás. Remélem igen, mert ha nem, akkor hülyeséget beszélek.
-
urandom0
senior tag
válasz
Ablakos #12151 üzenetére
A resources mappának a classpath-ban kell lennie, különben a Javanak fogalma sem lesz róla, hogy hol keresse a fájlaidat.
Ha a resources mappát hozzáadtad a classpath-hoz, akkor így hivatkozz rá a fájlodra:URL fxmlUrl = this.getClass().getClassLoader().getResource("fxml/sayhello.fxml");
Elméletileg legalábbis...
-
lanszelot
addikt
válasz
Ablakos #12123 üzenetére
Ez nem igaz.
A programom majdnem kész van.
Design van már csak ami unalmas. Pl, kep animáció gombnyomáskor.
Semmit se másoltam, semmi külső dolgot nem használtam.
Nem is szoktam. Saját ötleteimet valósítom meg, sose másoltam.
Mint írtam más a célunk. Én addig bingyózom míg megoldom.
Van időm, nem sietek. Volt, hogy hetekre félre raktam a projektemet, mert nem volt kedvem. /nem ezt, ezt nemrég kezdtem/Android Studio bug-okkal küzdök.
pl:`@layout/activity_main` does not contain a declaration with id `beteszEgyparBtn`
Ezt a hibát dobta. Fogalmam se volt mi a gond.
Rákerestem a neten mi a baj, és míg kerestem eltűnt a baj anélkül, hogy bármit csináltam volna. És csinál még ilyeneket.
Undo -t is próbáltam, nem jön elő a hiba. Pedig 10 percen át volt. -
sztanozs
veterán
válasz
Ablakos #12026 üzenetére
Remelem nem gond az angol:
Catch Block
You can add a catch block to a try-with-resources block just like you can to a standard try block. If an exception is thrown from within the try block of a try-with-resources block, the catch block will catch it, just like it would when used with a standard try construct.Before the catch block is entered, the try-with-resources construct will attempt to close the resources opened inside the try block. In case an exception is thrown when attempting to close one of the resources, these exceptions will be available from the exception's getSuppressed() method inside the catch block. Here is an example of a Java try-with-resources block with a catch block attached:
try(AutoClosableResource resourceOne = new AutoClosableResource("One", true)) {
resourceOne.doOp(true);
} catch(Exception e) {
Throwable[] suppressed = e.getSuppressed();
throw e;
} -
Arpee78
senior tag
válasz
Ablakos #12019 üzenetére
Nem vagyok még teljesen a téma szakértője, valaki biztos szebb választ is tud majd adni, de
Azt hiszem amit kiír az maga a memóriacím ahol a tömböd található, lévén a referencia típusú változók egy referenciát(hivatkozást) tárolnak el.
Az Arrays.toString(tombodValtozoNeve)) amivel megkapod emészthetőbben a tömb tartalmát, vagyis az Arrays osztály toString metódusával.
Ha nem így lenne javítsatok ki.
-
Drizzt
nagyúr
válasz
Ablakos #11983 üzenetére
Nem hinném, hogy máshogy kéne fordítani. De nem lehet, hogy valamelyik Java verzióban változott a viselkedés? Melyik verzióval fordítasz? Ki tudsz próbálni másikat is?
Rövid utánanézés után mintha a Java 11-ben lett volna ezzel kapcsolatos módosítás? Hányas Java OCP-t nézel és milyen JDK-val fordítasz?
-
BE4GLE
aktív tag
válasz
Ablakos #11924 üzenetére
Annyit tennék, még hozzá, hogy az ArrayList mutable. A projektekben az ilyen típusú visszatérési értékek kerülendők. A HashMap is ilyen. Ezeket inkább csak függvények és osztályok belső logikájához használd. Visszatérési értéknek mindig próbálj immutable-t használni, mint a List vagy a Map. Azt gondolom észrevetted, hogy az interface típusokban nincs add és put. Okkal.
-
floatr
veterán
válasz
Ablakos #11914 üzenetére
Metódus-referenciát akartam írni, de elbabráltam.
Ha a Literacy osztályban implementálsz egy static compare metódust a Double::compare mintájára (ahogy a lambdában csináltad), akkor úgy is lehetne a streames kód, hogy:.sorted(Literacy::compare)
Rövidebb nem lesz összességében, de elegánsabb, és nálam egy kód reviewn is hamarabb átmegy
-
BE4GLE
aktív tag
válasz
Ablakos #11910 üzenetére
Egy kis magyarázat: A comparator mindig int visszatérési értékű. Az érték előjele mutatja meg, hogy merre néz a kacsacsőr. Ha nem primívet használsz, akkor az object rendelkezik egy compareTo metódussal aminek int a visszatérési értéke. Szóval ha double helyett Double lenne a property, akkor hívhatnád így is. p1.compareTo(p2). Vagy ha ez az egyetlen property akkor akár comparator nélkül is mehet: sorted()
-
Sirpi
senior tag
válasz
Ablakos #11908 üzenetére
Alapból a stream-nek van minimális overhead-je a hagyományos bejárással szemben, viszont sokkal jobban karbantartható kódot eredményez.
Másrészt ha nagyon heavy a stream kiértékelése (pl. sokmilliós rekordszám), akkor a .parallel() lépést beiktatva a stream-be párhuzamosítja a feldolgozást, és magszám-közeli szorzót lehet így elérni sebességben. -
Sirpi
senior tag
válasz
Ablakos #11903 üzenetére
A stream-et egy iterátorként fogd fel, és a benne lévő lépések végrehajtódnak minden elemre.
Tehát minden elemre végre fog hajtódni először az upperCase, ami nagybetűsít. Ennek az eredménye megy át elemenként az anyMatch-be, ami megnézi, hogy az adott elem A betűvel kezdődik-e. Az anyMatch egy terminal operátor, vagyis zárja a stream-et, további lépést nem tudsz hozzáfűzni. A visszatérési értéke boolean:boolean anyMatch(Predicate<? super T> predicate)
Tehát az egész stream kiértékelés eredménye egy true/false érték, és true akkor, ha valamelyik elem nagybetűsítve A-val kezdődik. Az első sor elejére ezt is írhatod:
boolean existsWithA = Stream.of("d2", "a2", "b1", "b3", "c")...
És jelen esetben ez true-t fog visszaadni, de ha az a2-t kiszeded, akkor false-t.
-
Drizzt
nagyúr
válasz
Ablakos #11903 üzenetére
anyMatch egy Predicate-et vár. A Predicate egy olyan függvény, ami valamilyen bemenetre egy booleanüt ad vissza.
Az anyMatch addig folytatja a kiértékelést, amíg a predicate igaz nem lesz. Tehát jelen esetben addig, amíg nem talál olyan elemet, ami nagy A-val kezdődik. Utána leáll a további feldolgozás, mert teljesen felesleges lenne. -
Lortech
addikt
válasz
Ablakos #11899 üzenetére
Itt a gc egy példányszintű metódus (instance method), ami késői kötést (late/dynamic binding) használ, így a Counter futásidejű típusa határozza meg, hogy melyik gc() metódus implementáció hívódik meg (polimorfizmus). Ha SubCounter újradefiniálta (override) a gc()-t, akkor ha a list változód futás idejű típusa SubCounter, akkor az override-olt változat fog hívódni, nem tudod meghívni a Counter gc() metódusát azon a példányon keresztül.
(azért írtam zárójeleket, hogy jobban utána tudj nézni ezeknek a fogalmaknak)
-
sztikac
őstag
-
Szmeby
tag
válasz
Ablakos #11888 üzenetére
A
part
referenciája nem szűnik meg, ha arra gondoltál. A belepakolt Stringeket a clear ugyan eltávolítja a listából, de apart
él és virul. Egy referencia akkor szűnik meg, amikor semmilyen más élő objektum nem hivatkozik rá (mert mondjuk az utolsó hivatkozást is felülcsapod valami más referenciával).
Na meg a vezérlés kifutott a scope-jából is, ami a part esetén a metódus kapcsos zárójelei között található. (Ha a while ciklus kapcsos zárójelei közé tennéd a part deklarációt, akkor az lenne az ő scope-ja és minden körben új példány készülne belőle, de azt most nem akarod.)A csoda a
listRecipes.add(new Recipe(part));
soron történik, apart
referenciáját megjegyzi a recipe ojjektum is - immáron nem csak apart
változó fog arra hivatkozni -, az ő referenciáját pedig beledobjuk alistRecipes
listába, így az már nem vész el addig, amíg alistRecipes
létezik.Tehát a clear helyett bátran csinálhatsz egy új lista objektumot a
part
változódnak, sőt illene is, ha nem akarod piszkálni a régi lista tartalmát, ami már alistRecipes
bugyraiban pihen. -
BE4GLE
aktív tag
-
Szmeby
tag
válasz
Ablakos #11866 üzenetére
A
contains
teljeskörűen működik. Ha belenézel azObject
osztályba (ami minden osztály őse), láthatod, hogy azequals
metódus referenciák egyenlőségét vizsgálja - lévén más információja nincs az osztályról. Azt csinálja, mint amit az == operátor.Tehát az
equals
és egyben acontains
alapértelmezett működése az, hogy csak akkor tekint két objektumot egyenlőnek / a lista egy tagjának, ha az az objektum ugyanaz az objektum, mondjuk úgy, hogy ugyanazon a memóriacímen található adathalmaz.Abban a pillanatban, hogy kiadod a
new
utasítást, a jvm egy vadonatúj objektumot fog gyártani neked. Még ha ugyanazt a szöveget adod is meg neki a könyv címe paraméterben, még ha ugyanaz az évszám, még ha látszólag ugyanúgy is néz ki az az objektum, mint egy másik, a referenciájuk eltér, hiszen anew
utasítással ezt kérted a jvm-től, egy új objektumot.A referencia alapú összehasonlítás időnként hasznos dolog, de a modelljeinkben többnyire nem ez a legjobb megoldás. Ezért készítünk az objektumainknak saját
equals
t, amikor azokat egymással össze akarjuk hasonlítani, és azt várjuk el tőle, hogy egyenlőnek tekintsen két könyv objektumot, ahol a cím és az évszám egyenlő. Ezt sajnos meg kell írnod, mert a jáva túl buta, hogy kitalálja a programozó gondolatait, elvárásait.
(És készítünk nekik saját hashcode implementációt is, amikor azokat mondjuk HashSet-ben kívánjuk gyűjtögetni, vagy HashMap kulcsaként akarjuk felhasználni.)Tehát a
Book b1 = new Book("a", 1);
és aBook b2 = new Book("a", 1);
eltérő referenciával bír, az alapértelmezettequals
szerint ők különböző objektumok. Míg aBook b3 = b1;
ugyanazzal a referenciával bír, mint a b1 objektumod, az alapértelmezettequals
szerint ők ugyanazok az objektumok. -
Drizzt
nagyúr
válasz
Ablakos #11864 üzenetére
Akkor nem értem a problémát, nálam teljesen jól működik:
Name (empty will stop):
mybook
Publication year:
1
Thank you! Books added: 1
Name (empty will stop):
mybook
Publication year:
1
The book is already on the list. Let's not add the same book again.
Name (empty will stop):
Thank you! Books added: 1
Name (empty will stop):
yourbook
Publication year:
2
Thank you! Books added: 2
Name (empty will stop):
mybook 1
yourbook 2(Thank you! Books added: egy picit félrevezető kiírás, mert akkor is jön, ha nem adtunk hozzá semmit)
-
Drizzt
nagyúr
válasz
Ablakos #11862 üzenetére
A contains megmondja, hogy érték alapján van-e egyező elem az adott kollekcióban azzal az objektummal, amit paraméterként kapott. Azt, hogy érték szerint megegyezik-e valami, az equals metódus jelenti a Javaban. Ha van szerinted jó equals és nem így működik, akkor mutasd meg az equals-odat.
-
Drizzt
nagyúr
válasz
Ablakos #11860 üzenetére
Az Arraylist contains hasznalja az equalst. Ha nincs korrektul implementalt equals a Book classban, akkor csak abban az esetben fog igazat adni, ha ugyanazt a referenciat tartalmazza az egyik, meg a masik book. Erdemes viszont akkor mar hashCode-ot is implementalni, mert mas kollekciok hasznalhatjak azt is a contains eldontesehez.
-
Foglalt név
addikt
válasz
Ablakos #11791 üzenetére
Ez egész jó ki feladat.
Szóval a programban nem szerepel a 4. sorig "alma", ezért a közös String poolban sem.
Mivel az 1. és 2. parancs a new kulcsszavat használja, ezért mindkét String a heapbe kerül.
Az intern, amíg a pool-ban nem szerepel az érték, átrakja oda. Ergo az s1 átkerül, az s11 nem, az s2 pedig az intern után van, ez csak rámutat az s1-re.
Ha felcseréled a 3. és 4. parancsot, az s2 már az s1.intern előtt megcsinálja az almát a pool-ban, így az intern nem fogja az s1-et átmozgatni, ergo 3 különböző memóriacímet foglalsz (1-et a pool-ban kettőt pedig a new-k miatt a HEAP-ben).Ki tudod próbálni ha az s11 és s2 közé is raksz "=="-t
-
Drizzt
nagyúr
-
E.Kaufmann
veterán
válasz
Ablakos #10475 üzenetére
Gondolom levágja az elejét és csak az utolsó bájtot tartja meg (na ez megint jó kérdés, hogy a jvm milyen sorrendben tárolja a bájtokat és meg nem mondom). Ha a végét vágná le, akkor nem váltana előjelet, legalább is ha elől (bocs a pontatlanságért, talán "most significant bit"-nek lehetne nevezni, balról az első
) van az előjelbit.
Majd ha ráér egy okos, írja le mert én is kíváncsi vok -
disy68
aktív tag
válasz
Ablakos #9512 üzenetére
Rendes támogatás majd a Netbeans 9-es verziójában lesz. Az early access verziókhoz itt egy leírás. Amúgy a Netbeans használja a jre-t, a fejlesztéshez kell a jdk. Nem furcsa dolog, a Netbeans futásához kell egy bizonyos verziójú jre, míg a cél platform java verziója ettől lehet eltérő.
-
válasz
Ablakos #8725 üzenetére
Passz. A részletekre nem kérdeztem rá, csak arra, hogy lesz-e új kiadása, ahogy az eredetinek is van már 6-os.
Miért jó ha double és float típusokat normál alakban tárolják?
Csak az bennük a "poén", hogy pár biten hatalmas számokat tudnak tárolni?+ próbálgatom a "Milliomos" programot, de nem engedi keverni a float, és double értékeket. Pl.Nem engedi futtatni, ha a double-t lecserélem float-ra.
class Milliomos {
public static void main(String args[]) {
double összegASzámlán;
összegASzámlán = 50.22;
összegASzámlán = összegASzámlán + 40000000;
System.out.print("A számládon ");
System.out.print(összegASzámlán);
System.out.print(" Ft van. ");
}
} -
Karma
félisten
válasz
Ablakos #8487 üzenetére
Célszerű akkor nem kiprintelni, hanem a megfelelő helyre irányítani az eseményt.
public class AmicusFXMLDocumentController {
@FXML
private Button buttonMemoryLocation1;
public void initialize() {
//handle
buttonMemoryLocation1.addEventHandler(MouseEvent.MOUSE_PRESSED, this::buttonsMemoryLocation);
}
@FXML
private void buttonsMemoryLocation(ActionEvent event) {
if ((Button) event.getSource() == buttonMemoryLocation1) {
// itt szeretném elkapni, hogy az addEventHandler elsült
}
}
} -
-
floatr
veterán
válasz
Ablakos #4987 üzenetére
Az ritkán szokta hozni az elvárt eredményt. Konkrétum nélkül annyit tudnék a dologhoz tenni, hogy GUI builder-ek nem szokták szeretni, ha belepiszkálsz, vagy más builder kódját akarod megetetni vele. Olyan is van, ami metaadatokat tárol a kódban, vagy járulékos fájlokban, és ha ezeket babrálod, kiesik a szinkronból.
-
Mukorka
addikt
válasz
Ablakos #4905 üzenetére
Ránézésre azért mert nem hívod meg a connect függvényt a lekérdezés előtt így a connection null. Sőt, ahogy látom ott egy lokális változó a connection, így akkor se működne ha meghívnád
Érdemes lenne továbbá egy lezáró metódust is csinálni, ahol meghívód a close fv-t a connection-ön.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Honor 400 - és mégis mozog a kép
- Bittorrent topik
- Kazy Computers - Fehérvár - Megbízható?
- Bestbuy játékok
- AMD Navi Radeon™ RX 9xxx sorozat
- Motorola Edge 50 Neo - az egyensúly gyengesége
- LEGO klub
- Luck Dragon: Asszociációs játék. :)
- Tőzsde és gazdaság
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Azonnali készpénzes AMD Radeon RX 6000 sorozat videokártya felvásárlás személyesen/csomagküldéssel
- LG 55C3 - 55" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest