Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#9851) Sokimm válasza Lortech (#9846) üzenetére


Sokimm
senior tag

Nem kérdezek vissza, hogy mi minden ellentmondó, de így nem tudok érvelni, se indokolni, hogy mi hogy...

A 2 kérdésemet akkor egyszerűsítve tenném fel:
Hogyan lehet vizsgálni, ha egy Objektum példánya létrejött (van, létezik)?
És ha létrejött a példány, akkor még lehet null tartalmű, amire hogyan kérdeznétek rá? (azon túl, hogy kiteszed egy lokális változóba, ahogy az előbb írtad (ha nincs más, marad ez a módszer, csak elég bénácskának néz ki a kezdő szememnek))

Az összes választ itt szeretném előre (és hátra) megköszönni, nem szemetelném vele a fórmumot a későbbiekben! :)
(de úgy érzem a végére értünk a témának)
Köszönöm mindenkinek! :R

(#9852) Aethelstone válasza Sokimm (#9851) üzenetére


Aethelstone
addikt

Tisztázzuk. A csak deklarált, de még nem inicializált objektum kb. ugyanaz, mintha deklarálod, new Akarmi()-vel példányosítod, majd null-ra seteled. Ergó a kezelése is kb. ugyanaz.
Ha már létrejött egy példány, akkor nem lehet null...max a példányváltozók, de az megint egy másik kérdéskör.

[ Szerkesztve ]

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9853) Szmeby válasza Sokimm (#9851) üzenetére


Szmeby
tag

Hogyan lehet vizsgálni, ha egy Objektum példánya létrejött (van, létezik)?
if (myObject != null) {
System.out.println("myObject objektumom létezik, hivogathatom a metódusait");
} else {
System.out.println("myObject objektumom nem létezik, ha ráhívok egy metódusára, NullPointerException a jutalmam");
}

vagy

if (myObject instanceof String) {
System.out.println("myObject objektumom létezik, sőt azt is tudom róla, hogy String típusú, így bátran Stringgé castolhatom");
}

Ha eleve String típusú a myObject változód, akkor felesleges instanceof-olni.
Pl.:
String myObject = "kiskutya";
A bal oldalon jelölve vagyon, hogy ez legalább egy String, és mivel a java erősen típusos nyelv, compile error figyelmeztetne, ha valamit elcsesztél volna.
Object myObject = "kiskutya";
Ebben az esetben nem lehetsz teljesen biztos benne, hogy ez egy String (annak ellenére, hogy erről a nyilvánvaló példáról ordít, hogy az), de ha szeretnéd String-ként kezelni, akkor castolnod kell mielőtt meghívod rajta a String osztély metódusait ((String)myObject).isEmpty(); Ha pedig ezt biztonságban szeretnéd elvégezni, akkor a castolás előtt érdemes csekkolni egy instanceof-fal, hogy valóban String van-e benne.
A null nem String, a null nem is Object, a null semmi. Az instanceof mindig false-szal fog visszatérni egy null referenciára, mert a semmiről nem lehet eldönteni annak típusát.

És ha létrejött a példány, akkor még lehet null tartalmű, amire hogyan kérdeznétek rá? (azon túl, hogy kiteszed egy lokális változóba, ahogy az előbb írtad (ha nincs más, marad ez a módszer, csak elég bénácskának néz ki a kezdő szememnek))
Ha létrejött a példány, nem lehet null.

Kiteheted lokális változóba, ha úgy kényelmes:
String product = info.getProductString();
if (product != null && product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}

De nem kötelező, használhatod a gettert is újra meg újra:
if (info.getProductString() != null && info.getProductString().equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}

De akár meg is mókolhatod a lekérdezéskor, hogy kiküszöböld az API hülyeségeit:
String product = info.getProductString() == null ? "" : info.getProductString(); // ez egy ternáris operátor, egyfajta kompakt if: ha a getter null, akkor üres stringet használ helyette, különben meg a getter által visszaadott nemnull értéket
if (product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}

A java könyvek, vagy pl. az oracle tutorial relatíve korán elmagyarázza a java objektumok, referenciák, nullitás témakörét, érdemes rászánni azt a kis időt.

[ Szerkesztve ]

(#9854) Aethelstone válasza Szmeby (#9853) üzenetére


Aethelstone
addikt

Annyit tennék hozzá, hogy "CM..".equals(obj.getAkarmi());

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9855) Amartus


Amartus
senior tag

Felvilágosítani valaki, aki érti, hogy mi van a Java-val? Most nézem, hogy a 8-asnak megszűnt a támogatása(oracle.com), a kilencest már nem is látom a letöltések oldalon az oracle-nél. Viszont ott van a 10.0.1-es.

Most akkor melyik az "éles" verzió?

Istenem, tele van csillagokkal...

(#9856) Lortech válasza Amartus (#9855) üzenetére


Lortech
addikt

[link]

8-asnak nem szűnt meg a támogatása. 9-es egy köztes release, azért pörgetik ki. Végfelhasználóként használhatsz 8-ast vagy 10.0.1-est. Dev vagy üzemeltetőként meg úgyis azt használod, amelyiket épp kell.

Thank you to god for making me an atheist

(#9857) Sokimm válasza Szmeby (#9853) üzenetére


Sokimm
senior tag

Köszönöm, köszönöm, így már megy (nem sok időm van programozni, de már megy ez a része, hála nektek!)
Köszönet mindenkinek! :R

Új problémába futottam, remélem erre is lenne pár szavatok:
Nem tudok string-ből short-ot csinálni.

public static void main(String[] args) throws IOException {
String product_ID = "0x068E";
Controller StringToShort= new Controller();
StringToShort.ASD(product_ID);
}

public static void ASD(String product_ID_String) throws IOException {
short ProductID_short = 0;
try {
ProductID_short = Short.parseShort(product_ID_String);
} catch (NumberFormatException e) {
System.err.println("The string is not properly formatted!");
}
}

Mért nem tudom short-á varázsolni a string tartalmat?

(#9858) Mirman válasza Sokimm (#9857) üzenetére


Mirman
őstag

Szia !

A Short az egy 16bites integer ami 32,767 és -32,767 közt vehet fel értékeket . Te egy Stringet próbálsz short-á castolni ami nem lehetséges hiszen a stringben nem kizárólag a fent említett két érték közti szám van .

(#9859) Sokimm válasza Mirman (#9858) üzenetére


Sokimm
senior tag

Oh! Értem! Köszi!
Csak azt nem értem, hogy akkor minek van ez a függvény:
Short.parseShort(akármit);

Miként oldanátok meg akkor a problémám? :)
Egyesével levágdosom a stringről a karaktereket, majd konvertálom valahogy, értéket vizsgálva? (ha nem nagyobb, mint, stb...)

(#9860) Mirman válasza Sokimm (#9859) üzenetére


Mirman
őstag

Nem értem miért akarsz stringbol shortot csinálni . Ez egy String benne betűkkel . Nem tudsz belőle számot csinálni . :)

[ Szerkesztve ]

(#9861) gygabor88 válasza Sokimm (#9859) üzenetére


gygabor88
tag

A parseShort()-nak meg tudod mondani, hogy 16-os számrendszerben van megadva a szám.

(#9862) Sokimm válasza gygabor88 (#9861) üzenetére


Sokimm
senior tag

String product_ID = "0x0105";
short ProductID_short = Short.parseShort(product_ID_String, 16);

így se jó. (és még azt se tudom, miként tudnám jobban szétbonatani a debug-hoz)

...és azért akarom megcsinálni, mert mindent meg lehet csinálni programozással. :)
Ez egy kihívás, amúgy meg egy rakat adatot akarok return-olni egy függvényből, amit (short to string)-re konvertálom, majd string-ként kiküldöm (összefűtés után). (mivel a legkomplexxebb adattípus a string az adathalmazomban)

Amúgy valami objektumként is return-olhatnék, de ha már mint problémába ütközött tanuló, érdekelne, hogy miként lehet a string-emből ismét short. (mert az volt még 3 másodperccel ezelőtt)

(#9863) .45 válasza Sokimm (#9862) üzenetére


.45
csendes tag

a parseShortnál rossz változót konvertálsz, a product_ID-t kéne

másfelol nekem sem mukodik ami érdekes, mert ok itt ugyanígy csinálták: String to Hex Short

(#9864) Sokimm válasza Sokimm (#9862) üzenetére


Sokimm
senior tag

Sajnos már nem volt idő szerkeszteni az előző hsz-t...
Arra rájöttem, hogy a 0x kezdés nélkül képes konvertálni, de egy másik hex alapú (068E) számot már nem.
Aztán néztem, és az eszközk ID-jai elé a függvény generátora betolhat töltő nullákat (ezért az első nulla sem kell, elég 3 karakter, csak 4 digitet akar megjeleníteni (nem tudom mért)).

Ha simán a 68E-t konvertálom, akkor megint jó.
Már csak azt nem értem, hogy hogy fér el egy 16 bit-es short-ban (min -32,768 max 32,767 (inclusive)) a 390-es érték.

System.out.println(info.getProductId());
Mert erre a console a 390-et adja. (ez már más érték, mint az előbb hozott string/short dolog)

A println függvény játszik valamit a kiírási értékkel?

.45! Igen az elgépelés, a valódi kódban jól vannak elnevezve! :)

[ Szerkesztve ]

(#9865) gygabor88 válasza Sokimm (#9864) üzenetére


gygabor88
tag

Na, tehát a javadoc szerint: Csak olyan karakterek lehetnek a stringben, ami az adott számrendszerben használható. Ez magyarázza, hogy a "0x" prefix esetén miért nem működik. Ha csak "0" prefixet használsz, akkor működnie kell, most próbáltam egy online java compilerrel.

Ezt a 390-es dolgot nem értem. 10-es és 16-os számrendszerben értelmezve is simán beleesik a short intervallumába (a vessző nem tizedesvessző, hanem ezres határoló).

(#9866) disy68 válasza Sokimm (#9864) üzenetére


disy68
aktív tag

Java alatt az integer/short/akármi az egy szám reprezentáció számrendszertől függetlenül. Az alapértelmezett számrendszer a toString-nél a 10-es.
Integer.toString(int i, int radix)

int binary = 0b0010;
int hexa = 0x0ef2;

int sum = binary + hexa;

System.out.println(sum);
System.out.println(Integer.toString(sum, 2));
System.out.println(Integer.toString(sum, 8));
System.out.println(Integer.toString(sum, 16));

szerk: Amúgy a java elnevezési konvenciókról olvass még kicsit..

[ Szerkesztve ]

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9867) sutszi


sutszi
veterán

Használ valaki Gitlab + Jenkins + Nexus kombinációt? Mindenből az aktuális legfrissebb verzióval próbálunk egy zöldmezős projektet összerakni. A probléma abból adódik, hogy Jenkins 2 nem működik együtt Nexus 3-al, Maven projektek esetén. Ezt leírják a plugin mellé is, de már hónapok óta jelentették Jenkins és Nexus felé. Nincs valami trükk erre, hogy életre kelljen?

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9868) Aethelstone válasza sutszi (#9867) üzenetére


Aethelstone
addikt

Jenkinst gitlabbal ki lehet váltani.

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9869) sutszi válasza Aethelstone (#9868) üzenetére


sutszi
veterán

Hm. Ez nem jutott eszünkbe. Most nem vagyok még képben teljesen mennyire használjuk ki a Jenkinst, de amit én tudok az a klasszikus SNAPSHOT és RELEASE build készítés, ami utána artifactoryba pakol... Ettől függetlenül lehet olyan képessége a Jenkinsnek amiben a Gitlab le van maradva?

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9870) Aethelstone válasza sutszi (#9869) üzenetére


Aethelstone
addikt

Ilyet a github is tud. Hogy miben van hátrányban? Nem tudom, hogy milyen spec igényeitek vannak. Release, snapshot, artifactory tuti van. Maven, gradle support, minden szar :D

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9871) sutszi válasza Aethelstone (#9870) üzenetére


sutszi
veterán

Nagyon röviden, most van egy SVN + Jekins + Sonar + Jfrog artifactory kombó, amit használunk a fejlesztés során. De ez 3rd party üzemeltetés most amivel sok a baj... Ezért az egészet lokálba hozzuk át. És ha már 0-ról építjük akkor újragondoltuk meg verziót frissítettünk. SVN kuka, helyette lesz Git. Jfrog helyett meg Nexust néztük. Így jött ki ez a kis probléma. Még erősen a pilot szakaszban vagyunk...

Ha a gitlabbal megoldható, hogy kidobjuk a Jenkinst akkor az üzemeltetés lehet örülni fog, hogy kevesebb rendszerrel kell foglalkozni.

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9872) emvy válasza sutszi (#9871) üzenetére


emvy
nagyúr

Miert valasztanal Artifactory helyett Nexust?

while (!sleep) sheep++;

(#9873) sutszi válasza emvy (#9872) üzenetére


sutszi
veterán

Azt az egyik fejlesztő javasolta aki szerint az a legjobb. :B Én nem választok max javasolhatok. Meg támogatom az üzemeltetést, hogy a jelenlegi fejlesztői funkciók maradéktalanul átkerüljenek az új környezetbe.

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9874) mobal válasza sutszi (#9873) üzenetére


mobal
MODERÁTOR

+1 Artifactory.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9875) sutszi válasza mobal (#9874) üzenetére


sutszi
veterán

:DDD Teljes elbizonytalanodás...még jó, hogy csak az elején vagyunk. Bedobom az ötletet kedden, hogy maradjunk Artifactoryn, de kb máglyára dobnak. :))

[ Szerkesztve ]

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#9876) Aethelstone válasza emvy (#9872) üzenetére


Aethelstone
addikt

.

[ Szerkesztve ]

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9877) emvy válasza Aethelstone (#9876) üzenetére


emvy
nagyúr

?

while (!sleep) sheep++;

(#9878) Aethelstone válasza emvy (#9877) üzenetére


Aethelstone
addikt

Semmi. Baromság. Hosszú volt a nap.

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9879) garage112


garage112
aktív tag

Sziasztok!
Gyakorló Javasként egy kicsit elakadtam. A feladat az lenne, hogy 20 buszvonalból, 10-15-ig járnak a buszok, 16-20 ig nincs közlekedés. Viszont sehogy sem jövök rá a helyes megoldásra. Ezt a segédletet kaptam mellé:

var totalBusLines = 20;
var movingBusLines = 9;
var numberOfBusLines = 10;

while (numberOfBusLines <= totalBusLines +1 - movingBusLines) {
console.log('A(z) ' + numberOfBusLines + ' számú vonalon zavartalan a közlekedés');
numberOfBusLines++;
}

for (numberOfBusLines; numberOfBusLines <= totalBusLines; numberOfBusLines++) {
console.log('A(z) ' + numberOfBusLines + ' számú vonalon jelenleg nincs közlekedés');
}

Előre is köszönöm a segítségeteket ! :)

Iphone 14 Pro / / Xbox One - WildBlaze420 / / PlayStation 5 - Mrtn112 / / Dell G5 15" - Macbook Pro 15" Retina (2017)

(#9880) Szmeby válasza garage112 (#9879) üzenetére


Szmeby
tag

Szia, gyakorolj tovább, mert ez nem java. :P

Viccet félretéve. Azt már tudjuk, hogy mit kellene csinálnia, viszont nem írtad le, hogy ez helyett mit csinál.
Persze nem is fontos, hogy leírd nekünk, hiszen neked kell megértened. Javaslom, vegyél elő papírt, ceruzát, és szépen, apró lépésekben járd végig az utat egyesével, hogy a változók milyen értékeket vesznek fel, és a while, ill. for ciklusok feltételei igazként vagy hamisként térnek vissza. Minden egyes körben. Nyugi, nem lesz sok. :)
Legalább egyszer végig kell szenvedned magad ezen, hogy megértsd, mi miért történik. Később már könnyebb lesz.

Ha megvan fejben, hogy mit csinál, akkor már csak azt kell kitalálnod, hogy a feltételekben lévő matekot hogyan kell átalakítanod, hogy az elvárásaid szerinti eredményt produkálja. A ciklusokban az a jó, hogy csak az első és a végső állapotot kell jól kimatekoznod, a kettő között az inkrementálás elvégzi a többit. Hajrá!

(Feltételeztem, hogy a nyelvi elemek működésével tisztában vagy, vagyis hogy mit csinál a while és for ciklus , meg az increment úgy általában.)

[ Szerkesztve ]

(#9881) mobal


mobal
MODERÁTOR

Kicsit off, de nem tudom hova írjak. Docker-rel megoldható, hogy 3 féle képpen indítsam az imaget?

Pl.: van 3 db bash scriptem, test.sh, prod.sh és dev.sh.

Ha jenkinsből hívnám a gate-nél akkor a test.sh futna le, ha kiraknám élesbe a prod.sh fejlesztéshez, debughoz pedig a debug.sh.

mobal,

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9882) emvy válasza mobal (#9881) üzenetére


emvy
nagyúr

Persze.

while (!sleep) sheep++;

(#9883) mobal válasza emvy (#9882) üzenetére


mobal
MODERÁTOR

Tudsz rá adni egy példát, vagy mit módosítsak a Dockerfile-on mert egész délután nem jutottam dűlőre. Továbbá az jó mint flow, hogy készítek egy Docker img-t és ha átmegy a gate-en akkor prodba rakom?

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9884) emvy válasza mobal (#9883) üzenetére


emvy
nagyúr

docker run imagename commandname

Nem tudom, h a másik kerdesedre mi a válasz, nem ismerem az use case-t pontosan. Viszont ha elmondod, szívesen segítek, elég jól értek a Dockerhez.

[ Szerkesztve ]

while (!sleep) sheep++;

(#9885) harylmu válasza mobal (#9881) üzenetére


harylmu
őstag

Environmental variable-ben is tárolhatod hogy test, prod vagy dev. Milyen orchestratort használsz?

[ Szerkesztve ]

(#9886) mobal válasza emvy (#9884) üzenetére


mobal
MODERÁTOR

A második kérdést úgy értettem, hogy az jó megoldás, hogy építek egy docker imaget, majd az imagen lefuttatom a tesztet és ha minden oké mehet is prodba.

Előbb fusson a teszt + akármi és utána készítsek imaget?

Egyáltalán mikor célszerű kreálni?

Nem tudom jobban körülírni! :D

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9887) emvy válasza mobal (#9886) üzenetére


emvy
nagyúr

Az lenne az idealis megkozelites, ha az az image menne prodba, amit tesztelsz.

while (!sleep) sheep++;

(#9888) mobal válasza emvy (#9887) üzenetére


mobal
MODERÁTOR

Lényegében ezt szeretném! :) Köszi! :)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9889) emvy válasza mobal (#9888) üzenetére


emvy
nagyúr

A konfiguracio meg idealis esetben nem az image-en belul van, hanem kivulrol kapja. (Attol fugg, hogy futtatod -- lehet env var, bind mounted conf file, Swarm secret, ...)

[ Szerkesztve ]

while (!sleep) sheep++;

(#9890) mobal válasza emvy (#9889) üzenetére


mobal
MODERÁTOR

Köszi! Sikerült napközben :)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9891) PitkyePadvan


PitkyePadvan
tag

Sziasztok!

Jelenleg egyetemre járok és olyan szakirányon vagyok ahol nem vettem Java-t.
Szeretnék jelentkezni munkára, viszont lehet hogy Java-t is kellene tudnom hozzá
(illetve egy tesztet kellene kitöltenem).

Egy olyan kérdésem lenne hogy van-e valami jó összefoglaló (akár diák, jegyzet, könyv stb...) ami kifejezetten a nyelvről szól? Mivel C++ -t tanultam főleg ezért van fogalmam a dolgokról (függvény túlterhelés, öröklődés, mutatók (ami Java-ban úgy tudom nincs) ), viszont jó lenne valami amiből megtanulhatnám ezt a nyelvet is. :R

[ Szerkesztve ]

Üdv: László

(#9892) usergefi válasza PitkyePadvan (#9891) üzenetére


usergefi
kezdő

Ha a google-be beírod, hogy java tutorial, vagy java course, biztos találsz ezer meg egy ingyeneset is. Igaz, hogy angol nyelvűek, de ezen a szakterületen arra is szükség lesz. Pár dollárért udemy-n, lynda.com-on is biztos találsz korrekten felépített tananyagokat. Én ezeket javasolnám.

https://www.youtube.com/channel/UCOUWT6usZkzhcyJKaA3e-QQ

(#9893) Victoryus


Victoryus
addikt
LOGOUT blog (1)

Az első 100 prímszámot szeretném tömbbe kiiratni. Ezzel a kódommal az a gond, hogy az üres elemeket is beleteszi a tömbbe. Mit szúrtam el?
public class prim100 {
public static void main(String[] args) {
boolean prim = true;
int szamlalo = 0;
int tomb[]=new int[1000];
int i = 1;
do{
i++;
prim = true;
for (int j = 2; j <= Math.sqrt(i); j++){
if (i % j == 0){
prim = false;
break;
}
}
if(prim == true){
System.out.print(i + " ");
tomb[i]=i;
szamlalo++;
}
}while(szamlalo != 100);

// tömb elemeinek kiíratása
System.out.println("\n" +"A tömb elemei:");
for( int k = 0; k < tomb.length; k++ )
{
System.out.print(tomb[k]+" ");
}
}
}

Eladó Lego: 42139 All terrain vehicle

(#9894) Sirpi válasza Victoryus (#9893) üzenetére


Sirpi
senior tag

Itt a hiba:
tomb[i]=i;

ehelyett ez kell:
tomb[szamlalo]=i;

és a tomb elég, ha 100 elemű

[ Szerkesztve ]

Hazudnék, ha cáfolnám annak tagadását, hogy ez az ital nem nélkülözi a koffeinmentesség megnemlétének hiányát. Na most akkor van benne koffein, vagy nincs?!

(#9895) Victoryus válasza Sirpi (#9894) üzenetére


Victoryus
addikt
LOGOUT blog (1)

Köszönöm! Még egy kis segítséget kérnék. Adott a 2005-ös emelt érettségi lottós feladata. Találtam is egy jó oldalt (webotlet.hu) ahol elég szépen össze van szedve a java nyelvről sok minden. Itt fent van a lottós feladat megoldása is.
Amit nagyon nem értek, hogy hogyan számolja meg a páratlan számokat? (6. feladatrész) Ha kiíratom a szamokDb érékeit ezt adja:
4 2 2 6 1 0 2 1 3 0 5 6 5 0 4 3 5 3 4 2 2 1 3 2 2 2 2 4 1 5 5 0 2 4 1 6 5 2 3 2 1 4 3 2 4
De miért? Én mondjuk soronként megszámolnám mennyi a páratlan szám, vagy az összeset beolvasnám és egyesével megvizsgálnám párosak-e, de itt valami mást csinál. No ezt nem értem, hogy mit is?
Ezek az adatok:
37 42 44 61 62
18 42 54 83 89
5 12 31 53 60
1 28 47 56 70
54 56 57 59 71
7 21 33 39 86
21 29 37 48 68... 51 sor van összesen a txt fájlban.

[ Szerkesztve ]

Eladó Lego: 42139 All terrain vehicle

(#9896) Victoryus válasza Victoryus (#9895) üzenetére


Victoryus
addikt
LOGOUT blog (1)

A 8.feladatot se értem, amikor megnézi, hogy melyik prím számot nem húzták ki. Hogy megy végig a tömbön? Miért az a feltétel, hogy if( szamokDb[sz-1] == 0 )? A java-t pont ezért nem szerettem sose, mert nem látom át. De hát ez a legkeresettebb nyelv, szóval kénytelen leszek megszeretni. :)

Eladó Lego: 42139 All terrain vehicle

(#9897) usergefi válasza Victoryus (#9896) üzenetére


usergefi
kezdő

A szamokDb tömbben az szerepel, hogy az adott számot hányszor húzták ki:

szamokDb[szamok[i][j]-1]++

A szamok[I][j] az egyes számok lesznek, a fájlban elindulva pl. 37, 42, 44, 61, 62, 18, 42 stb...
Kivon még belőle egyet, hogy 0-tól induljon a tömb indexelése (erre mondjuk nem vágom, miért van szükség), így aztán például a legelső esetben a fenti kódrész: szamokDb[37-1]++, a második számnál: szamokDb[47-1]++ és így tovább. Tehát a szamokDb azt fogja tárolni, hogy melyik számot hányszor húzták ki, a tömb indexe lesz a szám-1, amit kihúztak, az értéke pedig hogy hányszor.

Aztán a kérdéses résznél 2-esével ugrálunk 0-tól kezdve. Mivel -1-et kivontunk, ezért a 0-ás index igazából az 1-es szám, a 2-es a 3-as, a 4-es az 5-ös és így tovább. Majd az értékeket hozzáadjuk a páratlan szám számlálóhoz. Ha mondjuk 1-esből volt 3, 5-ösből 2, akkor eddig 5 páratlan számod lesz.

A 8-as feladatnál az általad kérdezett 0-e feltételnek is a fentiekben találod meg az értelmét, ha az érték 0, az azt jelenti, hogy egyszer sem húzták ki. Ugyanúgy végigmegyünk a szamokDb tömb prímszámos idexein (megint -1), és megnézzük, hogy kihúzták-e (>0 az értéke), vagy sem (==0).

A te megoldásod is tökéletes lenne, a fenti megvalósítás nekem is túl absztrakt :)

Amúgy meg ha ezt a nyelvet fogod használni, akkor sosem kell ilyen kódot írnod majd, vagy max nagyon specifikus esetekben. Ez tipikus magyar oktatásbeli hülyeség, hogy egy olyan nyelvet, amiben az objektum orientáltságot, beépített könyvtárakat és függvényeket, skálázhatóságot, több szálúságot kéne használni (mert erre való), arra kényszerítünk, hogy több dimenziós primitív tömbökkel szivassuk a jónépet :(

[ Szerkesztve ]

https://www.youtube.com/channel/UCOUWT6usZkzhcyJKaA3e-QQ

(#9898) Victoryus válasza usergefi (#9897) üzenetére


Victoryus
addikt
LOGOUT blog (1)

köszönöm szépen!

A 2016-os érettséginél mivel érdemes feldolgozni a txt fájlt?
- F jeleni egy-egy vásárlás végét, a többi sor egy-egy árucikk.
- Alapvetően minden 500Ft, de ha többet vesz, kap kedvezményt. 2 db- 450, 3 db-tól 400Ft.
Példa txt fájl:
toll
F
colostok
HB ceruza
HB ceruza
HB ceruza
F
colostok
toll
F
szatyor
csavarkulcs

Kétdimenziós tömbbe tegyem? Ott azonos típusúnak kell lennie mindnek nem? Tehát nem tudom egyszerűen megsorszámozni, hogy 1-es vásárlás/toll stb... Bár van mód oda vissza konvertálni string-int között.
Hash map-pel? Ez tűnik leginkább logikusnak. Itt is belefutok abba, hogy azonos típusnak kellene lennie?

Eladó Lego: 42139 All terrain vehicle

(#9899) Szmeby válasza Victoryus (#9898) üzenetére


Szmeby
tag

Ez a leírás kicsit kaotikus lett számomra. Mi az elvárt eredmény? A "feldolgozni" elég elvont fogalom. A tömb / HashMap vs. típus problémát sem igen értem.

Amúgy meg a szép megoldás olyami lenne, hogy van számla objektumod, ami tételek listáját tartalmazza. Van tétel objektumod, aminek van neve, mennyisége, egységára, nettó összege. A kedvezmény tipikusan külön tételként jelenik meg, de aggregálhatod is az aktuális tétellel, vagy akár bevezethetsz egy kedvezmény típust is (ami kísértetiesen fog hasonlítani a tétel típusra).
Soronként beolvasod a fájlt, létrehozol egy új számla objektumot, minden sornál egy új tétel objektumot, F esetén a számla objektum kész, bedobod egy listába és jöhet a következő friss számla.
Ezt lehet cizellálni, elindulni OOP irányba, hogy nem soronként jön létre tétel, hanem már létező nevű tételnél csak a meglévő mennyiségét növeled eggyel. Vagy elindulhatsz a minimalista irányba, nincs tétel objektum, hanem a számla fenntart egy map-et, a kulcs a tétel neve (String), az érték pedig a darabszám (Integer), és azt növelgeted szükség esetén.
Végül a kedvezményszámítás már könnyen megy, ha előállt a számlán az összes tétel, mennyiségtől függően kiosztasz nekik egy-egy egységárat, és abból már számolható lesz a nettó. Akár on-the-fly, nem nehéz számítás.

(#9900) mobal


mobal
MODERÁTOR

Megint itt kérdeznék nem Javá-s kérdést. Nekem erről van véleményem, de a tiétekre is kíváncsi vagyok. Van egy REST API amibe bekerült néhány RPC. Mennyire jó ezeket keverni, továbbá ha ott a REST van-e értelme az RPC-t használni - keverni?

(RPC csak bizonyos értéket settel, kvázi paraméter nélküli update lenne.)

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

Útvonal

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