- Hobby elektronika
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- Azonnali notebookos kérdések órája
- Milyen notebookot vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Vezetékes FEJhallgatók
- Milyen billentyűzetet vegyek?
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Monitor hiba topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
Új hozzászólás Aktív témák
-
floatr
veterán
válasz
alratar #4885 üzenetére
Ha a cél a Vector használata, akkor nem életszerű.
Az ilyen nyilvántartásokat Map vagy Set használatával sokkal egyszerűbb, és gyorsabb is kezelni. Ha rendezési elv is van mögötte, akkor vannak rendezhető Map-ek is. Nem véletlen, hogy általában adatbázist is raknak mögé. -
floatr
veterán
válasz
alratar #4878 üzenetére
Akkor hadd szóljak ki egy kicsit az enterspájzból én is. Ha egy metódusnak a neve "set...", de nem értéket állít be, hanem összead, akkor -- még ha azt is csinálná, amit kellene -- egy kód review-nál fognak hátba vágni. Másrészt meg sokak számára fájó pont, de célszerű legalább az elnevezések esetében angolt használni. Ha egy végzős egyemistát bedobnak a mély vízbe, nagy eséllyel kerülhet olyan projektbe, ami külföldi kooperációban készül.
De ha a konkrét példánál maradunk, akkor sokkal hatékonyabb lenne egy Map-be tárolni, és kulcs (név) alapján keresni, vagy Set-be pakolni, és hashCode/equals metódusokat használni. Ha ez valami oktatáshoz kötődik, akkor nem értem, hogy miért nem lehet életszerűbb példákon keresztül oktatni.
-
-
WonderCSabo
félisten
válasz
alratar #4867 üzenetére
De ennek semmi értelme! A függvény lefutása után a lokális változó felszabadul, és a növelt érték megy a kukába... Gondolom itt azt akartad elérni, hogy az osztály által reprezentált áru mennyisége változzon meg, nem?... Mert arra a jelenlegi függvényed nincs hatással.
-
WonderCSabo
félisten
válasz
alratar #4865 üzenetére
Az, hogy amikor ezt írod, hogy
public void setMenny(double menny) {
menny += menny;
}Akkor a paraméterben kapott menny változó értékét növeled meg, és nem a példányváltozóét. A lokális változó mindig elfedi a tagváltozót. Úgy tudsz ilyen esetben a tagváltozóra hivatkozni, hogy:
public void setMenny(double menny) {
this.menny += menny;
}A másik opció, hogy átnevezed a paramétert. Tényleg el kéne olvasnod valami alap Java könyvet, vagy vmi tutorialt végigcsinálni. De egyébként ez a jelenség más nyelveken is így vna.
-
Karma
félisten
válasz
alratar #4855 üzenetére
A menny += menny csak nekem tűnt fel?
Mindenesetre eddig ez elég FUBAR, szerintem lassítanod kéne egy kicsit és két dolgot mindenképp megejteni: kicsit végiggondolni hogy ki kivel van, és némi konvenciót is kéne találnod a tagváltozókban (vagy kiírni a this-t, mert így a settereid nem sokat csinálnak.
WonderCsabo: a += -re gondoltam explicite
-
Jim-Y
veterán
válasz
alratar #4855 üzenetére
Én ezt így csinálnám.
Nyílván csinálhatnál ekkor a gyümölcsöknek is egy külön osztályt. De akár az is játszik, hogy nem csinálsz egy külön interface-t, hanem pl a Zöldséget a Termék osztályból származtatod, mint ahogy a Gyümölcsöt is.
Ez sem egy világbajnok kód, de szerintem annál amit csináltál jobb -
WonderCSabo
félisten
válasz
alratar #4855 üzenetére
Itt eléggé nagy kavar van.
A Vector<String> aru példányváltozót elfedi a lokális Termek aru - ez bár legális, nem éppen okos döntés. Valamelyiket mindenképpen nevezd át, az elsőnek van rossz neve mellesleg.
A zoldsegek Vector hol van definiálva?
Termek aru = new Temek(nev, 0.0);
if (zoldsegek.contains(aru)) {Ez itt mindig false-ot fog visszaadni, mivel a contains az equals metódust hívja meg, ami pedig alapesetben a referenciákat hasonlítja össze, azok pedig sosem fognak egyezni, hiszen mindig új objektumot hozol létre. Definiáld felül az equals és hashCode metódust a Termek osztályban, hogy ez értelmesen működjön.
A Vector<String> aru típusparamétere miért nem Termek?
Console.readLine
Csak kíváncsiságból kérdezem: ezt az osztályt milyen framework szolgáltatja?
-
WonderCSabo
félisten
válasz
alratar #4850 üzenetére
Nem biztos, hogy jó lesz, nem teljesen értem, hogy mit akarsz. Egyébként Object-et típusparaméternek nem sok értelme van megadni, legalábbis ebben az esetben semmi.
Ha Object-et adsz meg típusparaméternek, akkor bármilyen objektumot berakhatsz a konténerbe. Pl.
Vector<Object> vector = new Vector();
vector.add(new String());
Integer integer = (Integer) vector.get(0);Az utolsó sor fordítási időben teljesen legális kód, de ClassCastException-nel jár, hiszen a String nem Integer. A vicc az, hogy a generic-et pont arra találták ki, hogy ezt a problémát kiküszöbölje, Te pedig arra akarod használni, hogy mégis probléma lehessen belőle...
-
WonderCSabo
félisten
válasz
alratar #4843 üzenetére
Csak az, hogy mégsem String típusú objektumot adtál át az add metódusnak, hanem elnéztél valamit. Fontos, hogy a statikus típusnak is String-nek kell lennie, mivel fordítási időben történik a típusellenőrzés, szóval egy Object statikus típusú objektumot nem tudsz átadni, hiába dinamikus típusa String.
Egyébként látom nem csak sikerült megfogadni a tanácsot, és ArrayList-et használni.
-
-
trisztan94
őstag
válasz
alratar #4207 üzenetére
A <= es a >= logikai operatorok, jelentesuk: kisebb egyenlo, nagyobb egyenlo.
a => hozzafuzesre valo, amit irtal:
x => 10 azt jelenti, hogy x legyen egyenlo 10-el. Altalaban asszociativ tombnel hasznaljak leginkabb php-ban, pl: elem => 15 es akkor ugy hivatkozol ra, hogy array[elem] -> ennel az erteke 15
szerk: javitom magam: csak php-ban van ertelme (+ olyan nyelvekben ahhol vannak asszociativ tombok)
-
Karma
félisten
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- BESZÁMÍTÁS! ASUS B450 R7 2700X 16GB DDR4 512GB SSD RTX 2060 Super 8GB Zalman i3 FSP 600W
- Több Lenovo Thinkpad x1 carbon gen 4 / 5 / 6 / 7 X1 Yoga gen3 6-9. gen i7, i5 procik
- Eladó ez a jóféle kis Synology DS223j
- BESZÁMÍTÁS! ASUS H610M I5 12400F 32GB DDR5 512GB SSD X 4060 8GB SPIRIT OF GAMER CLONE 3 Chieftec600W
- BESZÁMÍTÁS! MSI Z390 i5 9400F 16GB DDR4 512GB SSD RTX 2060Super 8GB Corsair Carbide Series 200R 600W
- Telefon felvásárlás!! Xiaomi Redmi Note 10, Xiaomi Redmi Note 10s, Xiaomi Redmi Note 10 Pro
- LG 27GR95UM - 27" MiniLED - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 1000
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- BESZÁMÍTÁS! Gigabyte B760M i5 14600KF 32GB DDR4 1TB SSD RX 6700XT 12GB Zalman Z1 Plus Seasonic 650W
- MacBook felvásárlás!! Macbook, Macbook Air, Macbook Pro
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest