Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
Vesporigo
#10658
üzenetére
A szortírozós kérdésem inkább elgondolkoztató jellegű volt. Ha tudod, hogy egyéb esetekben milyen díjszabást kell alkalmazni, akkor azt a konstruktort kell meghívnod és az objektumot visszaadnod, ami azt a díjat számolja ki.
De látom, hogy sikerült megoldani, úgyhogy nem ragozom tovább. Grat! -
axioma
veterán
válasz
Vesporigo
#10652
üzenetére
Egyreszt tipikus switch-case pelda az else if-ek helyett, ha mar tanultatok.
Masreszt gyanus, hogy az altipusok konstruktorai nem kapjak meg a szam nevu stringet.
Harmadreszt lehet egybolreturn new KwakPhoneNumber(szam);alakban. Vagy ha mar mindenkepp valtozoba is teszed (bar ez a jelen reszlet nem indokolja), akkor nem kell az adott agon vissza is adni, eleg az ahova odakommentelted...ami jelenleg nonreachable, az IDE nem jelzi neked?ja nem, akkor az jo, ha az az altalanos eset, de ott is kene akkor egy konstruktorhivas es a parameter megadasa.[Amugy az altipusok azok leszarmazottjai rendesen a PhoneNumbernek? Mert anelkul nem fog menni.]
-
Szmeby
tag
válasz
Vesporigo
#10652
üzenetére
Ha tudod, hogy az 1 a Kwak, 8 az Iki, és a 9 pedig McChip, akkor azt is illene tudnod, hogy az összes többi esetben (0, 2, 3, stb) micsoda. Nos, ezt a bizonyos
new MicsodaPhoneNumber()-t fogod azokban az esetekben visszaadni.
Mi a célja az első karakter szerinti szortírozásnak?Megj. 1: Stringeket ne hasonlíts össze egymással az
==operátort használva, mert hibás eredményt kaphatsz, aString#equals()javasolt helyette. De akár maradhatott volna char is az a firstLetter. Mindezektől függetlenül aString#startsWith()picit átláthatóbbá tenné a kódot.Megj. 2: A System.exit() nem szép, ne nagyon szokd meg. Majd amikor tanulsz az Exception-ről, egy világ tárul ki előtted.
Megj. 3: Az
== trueelhagyható. Az== falseis, amennyiben használod a!operátorral jelzett tagadást. Vagy egyszerűen else if helyett csak simán az else kifejezést használod (persze ez esetben meg kell cserélni a két külső blokkot, és a végén lesz a hibás formátum jelzése, de ez semmit nem változtat a működésen).Megj. 4: Jávában a változók neveit kisbetűvel kezdjük, ez egy ilyen konvenció.
Megj. 5: Ha megfigyeled, hogy minden if blokkod ugyanúgy végződik (
return phoneNumber;), akkor felmerülhet a gondolat, hogy felesleges annyiszor megismételni azt, elegendő az összes if blokk mögött elhelyezni, csupán egyszer, az eredmény ugyanaz lesz. -
axioma
veterán
válasz
Vesporigo
#10546
üzenetére
A gond ott kezdodik (bocs, nem bantas, hanem segitseg akar lenni), hogy mas az osztalydefinicio es mas a peldany.
Menjunk vissza, mi a cel? Lesznek ember-peldanyaid, meg ital-peldanyaid, es az a kerdes, hogy ha megissza egy emberpeldany az italt, mi a(z uj) veralkohol-szintje. Vagy az jobban illik az eddigi kododhoz, hogy ha meginna, mennyivel emelne a veralkohol-szintjet.Szoval a lenyeg, hogy a fenti, nevezzuk inkabb verezrelekNoveles() fuggvenyednek kene egy Ital tipusu parametert definialni, es az adott ital-peldanytol elkerni a megfelelo adatot.
public double verezrelekNoveles(Ital egyital) {
return egyital.getAlkoholGramm() / kilogramm;
}Az elnevezes most direkt ilyen "kilogo", hogy jobban lasd a kulonbseget, de nem kovetendo.
szerk. lassu vagyok... keresztposzt
-
válasz
Vesporigo
#9773
üzenetére
3,4 (tizedes vesszővel) nem megfelelő double reprezentáció. Ha 3.4-et (tizedes ponttal) adtál volna meg, akkor megjelenítette volna.Ja és a nagyobb probléma, hogy beker-ben nem kell új instance, mert nem a jelen instance-ra állítod be a változókat, hanem az újonnan létrehozottra:
public void beker() {
Scanner sc = new Scanner(System.in);
System.out.println("Kérem a diák nevét!");
nev = sc.nextLine();
System.out.println("Kérem a diák születési évét!");
szuletesiEv = sc.nextInt();
System.out.println("Kérem a diák átlagát!");
atlag = sc.nextDouble();
} -
Lortech
addikt
válasz
Vesporigo
#9701
üzenetére
Amikor deklarálsz egy metódust, mindig meg kell adni a visszatérési értékének típusát vagy a voidot.
Vegyünk két metódust:
void m1() {
}String m2() {
return "visszatérési érték";
}m1 void, ami azt jelenti, hogy nincs visszatérési értéke, azaz a metódus hívás nem használható olyan kontextusban, ahol egy értéket várunk.
pl.
String x = m1(); //hibás, mert m1 nem tér vissza értékkel.
System.out.println(m1()); //hibás, mert m1 nem tér vissza értékkel.
x = m2(); // ok, x értéke "visszatérési érték" leszUgyanígy m1 metódus törzsében nem adhatsz meg pl. return "xyxy"; utasítást, mert nem térhetünk vissza értékkel, ellenben megadhatunk return; utasítást, amivel jelezzük, hogy adott ponton térjen vissza a metódus (visszatérési érték nélkül).
pl.void m1() {
return "xyxy"; //hiba
return; //ok, de nem kötelező, itt felesleges
} -
kispx
addikt
válasz
Vesporigo
#9491
üzenetére
Jó lesz kezdésnek. Többen is azt javasolták, mivel az alapoktól kezdi.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Interactive Brokers társalgó
- exHWSW - Értünk mindenhez IS
- Milyen egeret válasszak?
- BMW topik
- Xbox Series X|S
- Autós topik
- Azonnali fotós kérdések órája
- Gyúrósok ide!
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- Dobná a fizikai kezelőszerveket a Sony gamepad koncepciója
- További aktív témák...
- Azonnali készpénzes Sony Playstation 5 lemezes és digitális felvásárlás személyesen/csomagküldéssel
- Oppo A14 4/64GB / 12 hó jótállás
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Eladó MacBook Pro 13 (M1, 2020) Ezüst / 8GB / 256GB Magyar bill. újszerű
- BESZÁMÍTÁS! MSI B450M R5 5500 16GB DDR4 512GB SSD RX 6500 XT 8GB Rampage SHIVA ADATA 600W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs


