- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
Új hozzászólás Aktív témák
-
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,
-
Szmeby
tag
válasz
Victoryus #9898 üzenetére
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. -
válasz
usergefi #9897 üzenetére
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
csavarkulcsKé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? -
usergefi
kezdő
válasz
Victoryus #9896 üzenetére
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
-
válasz
Victoryus #9895 üzenetére
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. -
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. -
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]+" ");
}
}
} -
usergefi
kezdő
válasz
PitkyePadvan #9891 üzenetére
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.
-
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.
-
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!
mobal,
-
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
ésdev.sh
.Ha jenkinsből hívnám a gate-nél akkor a
test.sh
futna le, ha kiraknám élesbe aprod.sh
fejlesztéshez, debughoz pedig adebug.sh
.mobal,
-
Szmeby
tag
válasz
garage112 #9879 üzenetére
Szia, gyakorolj tovább, mert ez nem java.
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.)
-
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 !
-
válasz
Aethelstone #9876 üzenetére
?
-
MrSealRD
veterán
válasz
Aethelstone #9870 üzenetére
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.
-
MrSealRD
veterán
válasz
Aethelstone #9868 üzenetére
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?
-
MrSealRD
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?
-
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..
-
skoda12
aktív 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ó).
-
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!
-
.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
-
Sokimm
senior tag
válasz
skoda12 #9861 üzenetére
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)
-
Sokimm
senior tag
-
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!Ú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?
-
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ó?
-
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.
-
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. -
Sokimm
senior tag
válasz
Lortech #9846 üzenetére
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! -
Lortech
addikt
válasz
bambano #9848 üzenetére
Jaj istenkém, hát így hívják az exceptiont, béna, inkonzisztens elnevezés. És akkor mivan?
Historikusan (pl. C és társai esetén) mutató típushoz olyan többletjelentést (pointer aritmetika) társítunk, ami Java referenciáknak nincs, ezért szoktuk különválasztani a kettőt. -
Sokimm
senior tag
válasz
Lortech #9846 üzenetére
De ahhoz, hogy átadjam a nevét, vizsgálni szeretném előbb.
A logikám először vizsgál, aztán adja át a nevet.
Egy lokális változóba kell tennem az értéket, majd csak azt tudom vizsgálni a .equals-al??
Mert ezzel sikerül a vágyam:if (info.getProductString() instanceof String) {
AskDeviceName = info.getProductString();
}
//todo... -
Sokimm
senior tag
válasz
Lortech #9844 üzenetére
Ez lesz az akkor!
"Objektum példányod viszont nincs"
Hogyan tudom ellenőrizni, hogy van-e példány már, vagy sincs?
(nem az instanceof String-el)
Van erre valami uri huncut megoldás? (hivatalos, bevált, szakmai, tuti)(#9832) bambano:
Kipróbáltam, de mindig true-t ír, a te verziódra is: (tehát van benne valami?)System.out.println(info.getProductString()!=null);
-
Lortech
addikt
válasz
Aethelstone #9841 üzenetére
(bocs, válaszra nyomtam, de nem csak neked írtam)
-Null-ra instanceof String false-t ad természetesen. Null az null típusú.
-Pointerezést hagyjuk már, nincs pointer javában, referencia van. Nem ugyanaz a kettő, úgyhogy nem csereszabatos a két fogalom.
-Az eredeti példában AskDeviceName null, és mivel isEmpty egy példány szintű metódusa a String oszálynak, ezért kapsz nullpointexceptiont, mert null referencián próbálod hívni a metódust. Objektum példányod viszont nincs.
-primitív típusoknak van default értékük, ha mezők. Lokális változokként inicializálatlanok by default, compile time error rájuk hivatkozni. -
Ursache
senior tag
válasz
bambano #9839 üzenetére
https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.5
Definiált default értékük van a primitíveknek javaban.
-
Sokimm
senior tag
válasz
Aethelstone #9840 üzenetére
Ha igaz lenne amit mondasz, akkor az első if-em true-ként értelmezné a feltételt, és az AskDeviceName kezdő értékét (asd) beállítaná mondjuk null-ra, elvégre true a feltétel. (és kiiratná a 2_AskDeviceName.isEmpty()? sort...)
Ha String AskDeviceName-et vizsgálom, hogy.equals-e, akármire, akkor nincs hibaüzenet, de ha a .getProductString-re, akkor van....)
Ergo valami nem stimmel...import java.awt.BorderLayout;
import purejavahidapi.*;/*
http://nyholku.github.io/purejavahidapi/javadoc/index.html
https://github.com/nyholku/purejavahidapi */
import java.util.List;
public class HID_joy {
public static void main(String[] args) {
String AskDeviceName = "";
List<HidDeviceInfo> devList = PureJavaHidApi.enumerateDevices();
for (HidDeviceInfo info : devList) {
System.out.println("1_AskDeviceName.isEmpty()? " + AskDeviceName.isEmpty());
if (info.getProductString() instanceof String) {
AskDeviceName = info.getProductString();
System.out.println("2_AskDeviceName.isEmpty()? " + AskDeviceName.isEmpty() + " mert: " + AskDeviceName);
}
System.out.println("3_AskDeviceName.length()" + AskDeviceName.length());
if (info.getProductString() instanceof String && AskDeviceName.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("mach!!!");
VendorID = info.getProductId();
ProductID = info.getProductId();
} else {
System.out.println("Nem a keresett eszköz");
}
}így néz ki ez konzolon:
1_AskDeviceName.isEmpty()? true
3_AskDeviceName.length()0
Nem a keresett eszköz
1_AskDeviceName.isEmpty()? true
2_AskDeviceName.isEmpty()? false mert: USB Joystick
3_AskDeviceName.length()12
Nem a keresett eszköz
1_AskDeviceName.isEmpty()? false
3_AskDeviceName.length()12
Nem a keresett eszköz
1_AskDeviceName.isEmpty()? false
2_AskDeviceName.isEmpty()? false mert: CM STORM INFERNO GAMING MOUSE
3_AskDeviceName.length()29
mach!!!De ha nyersen ráengedem az info.get-re a .equals-t, akkor jön a hibaüzi...
System.out.println(info.getProductString().isEmpty());
//vagy erre is hibát dob:
System.out.println(info.getProductString().length());
Exception in thread "main" java.lang.NullPointerException -
bambano
titán
igen, téves.
az elemi típusoknál, mint ami az int, ha deklarálod, lefoglalódik a helye. az értéke valami lesz, nem tudjuk, hogy inicializálás nélkül mi az értéke (leginkább a korábbi memória használat után ottmaradt szemét), de egy egész számként értelmezhető szám lesz ott.
ezzel szemben az Int-nél (nagybetűvel), a deklaráció eredménye egy pointer, aminek a kezdeti értéke null, és amikor az Int típusú objektumot példányosítod, akkor lesz benne egy olyan pointer, ami az adott példányra mutat és nem null.
ugyanez igaz a Stringre.
-
Sokimm
senior tag
A logikád alapján (amit még nem értek, kérlek légy türelmes velem
), ha a get dob egy null-t, mert nincs inicializalva, amit majd vizsgálok az isEmpty-vel, de mért nem dob true-t, elvégre nagyonnagyon üres.
A felépítés a következőképpen néz ki a fejemben (kérlek ezt is korrigáld, ha téves)
1, Címterület foglalás (deklarálás) típusmegjelöléssel, változó név adással // int x;
2, Mindaddig, míg nem kap kezdő értéket, "null" van benne, tehát üres. Itt a fejemben az isEmpty true. (de a valóságban nem true)
3, Értékadás (inicializálás) // x=1; -
Sokimm
senior tag
válasz
bambano #9832 üzenetére
Köszi, kipróbálom, ha odajutok!
Amúgy lehet, hogy a mutató célja (memória címterület, amiből az info.get.... et kérdeznénk) nem is létezik (nem adtak a gyártók az eszköznek nevet, és emiatt címet se foglaltak le a "névnek"). Tehát hibát dob, mert olyanra mutatok, ami nem is létezik (nem hogy csak null lenne).A string vizsgálat meg lehet logikailag nem egymás melett létező dolgokat (ez==ezzel?) vizsgál, hanem csak bele néz a mutatott területre (ha tud), és kiköp egy választ. Mivel nem tud belenézni, nem is hibának érzékeli, hanem "nem string" üzenettel tér vissza. Ha van lefoglalva terület, és bele tud nézni, és még netalán String is, akkor kiköpi válasznak, hogy true.
Ez a gondolatmenet hülyeség?
-
Sokimm
senior tag
válasz
skoda12 #9830 üzenetére
Már próbáltam (csak elfelejtettem említeni), hogy nem működik.
String AskDeviceName = info.getProductString();
System.out.println(AskDeviceName.isEmpty());//ez a 35. sor
/* Ezt a hibát dobja erre:
Exception in thread "main" java.lang.NullPointerException at hid_joy.HID_joy.main(HID_joy.java:35)
C:\Users\sokimm\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
*/Aztán végül így meg megy:
if (info.getProductString() instanceof String) {
AskDeviceName = info.getProductString();
System.out.println(AskDeviceName.isEmpty());
}Mért képes a String"ségét" vizsgálni, de az ürességét nem? Van olyan eszköz, aminek nincs neve (a gyártó nem adott neki, ezért gondolom null értéke van, vagy lehet nincs is ilyen memóriacímterülete?), de van, aminek van neve (amiket használnék, azoknak van).
-
skoda12
aktív tag
Egyrészt stringeket nem ==-vel hasonlítunk össze, hanem equals() metódussal. Másrészt szerintem rossz stringeket próbálsz összehasonlítani, mert az első kód alapján a productString lenne az a "CM ...", de te valami AskDeviceName-t használsz helyette, ami nem látom hol kap értéket.
-
Sokimm
senior tag
Sziasztok!
Szeretnék egy kis segítséget kérni egy dologban. Netes HID eszköz include-jából szeretnék adatot nyerni.
https://github.com/nyholku/purejavahidapiVan egy ilyen kódom:
import purejavahidapi.*;
List<HidDeviceInfo> devList = PureJavaHidApi.enumerateDevices();
for (HidDeviceInfo info : devList);
System.out.printf("VID = 0x%04X PID = 0x%04X Manufacturer = %s Product = %s\n",
info.getVendorId(),
info.getProductId(),
info.getManufacturerString(),
info.getProductString(),Erre ezt az output-ot kapom:
VID = 0x046A PID = 0x0023 Manufacturer = null Product = null
VID = 0x12CF PID = 0x0186 Manufacturer = COOLER MASTER Product = CM STORM INFERNO GAMING MOUSEAzt szeretném elérni, hogy megkeressen egy eszközt (példának okáért a CM STORM INFERNO GAMING MOUSE nevűt, majd a VID és PID értékeket adjuk tovább egy változónak (hogy tudjam majd feldolgozni a bejövő adatokat)).
Ezzel próbálom szűrni a cikluson belüli végigfutást (mikor mit csináljon), de sikertelenül.
if (info.getProductString() instanceof String /*mert néha null értékű, és hibát dob*/ && AskDeviceName=="CM STORM INFERNO GAMING MOUSE") {
System.out.println("mach");
VendorID = info.getProductId();
ProductID = info.getProductId();
} else {
System.out.println("nem jó az if");
}Azt már tudom, hogy tuti String az adat, és a mérete is konstans, de mégsem talál egyezést a beírt adatommal.
Mit rontok el?
Szándékosan nem az ID-kkal azonosítom, mert a user interface grafikus felületen a neve alapján választjuk majd ki, hogy melyik eszközt akarom használni, amit majd a gép az ID-k alapján azonosít. -
Aethelstone
addikt
Nah. Ha a böngészőbe berakod a "c:\Temp\akarmi.jpg" linket, akkor a böngésző megnyitja a Te fájlrendszeredből. Ugyanez egy webalkalmazás esetén nem működik. Ott ugye jó eséllyel a webalkalmazás valahol a világ másik végében van. Ezért a "c:\Temp\akarmi.jpg" hivatkozás valahol a webalkalmazás "WEB-INF\c:\Temp\akarmi.jpg" könyvtárában keresgél. Szerintem.
Ezért vagy http://www.akarmi.com\temp\akarmi.jpg formában rakd be a képet, ahol is a http://www.akarmi.com\temp a távoli gép megfelelő, képeket tartalmazó könyvtárára mutat vagy pedig base64 enkódold a képet, mielőtt az oldalt összerakod és a base64 enkódolt kép legyen beágyazva.
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" /> -
updog
őstag
válasz
Aethelstone #9825 üzenetére
Köszi mindenkinek a válaszokat!
A lényeg ugye az lenne, hogy az applikációtól független path-on elérhető képeket rakjak ki (tehát pl. ide a relative path nem igazán értelmezhető).
Az most mindegy, hogy honnan szedem a fájlok elérési útjait, a problémám konkrétan az, hogy azok most is jók (külön beírva akár böngészőbe ezeket, megjelennek a képek, míg az oldalon beágyazva ugyanezzel az elérési úttal nem). Először ezt a bagatellnek tűnő hibát próbálom megoldani.
Nyilván tök ugyanezzel a kóddal - ha a webapp saját folderébe teszem a képeket és így relatív pathszal hivatkozok rájuk, megjelennek, tehát nem a megjelenítő kóddal lesz a baj.
-
bambano
titán
előrebocsátom, hogy tomketet nem használtam még...
glassfishben ennek a rossz verziónak az a szép megoldása, hogy a glassfish környezeti változói közé felveszed, hogy hol vannak a képek, és azt lekéred jávából.a helyes megoldás szerintem az, hogy nem a fájlrendszerből veszed ki a képek listáját, hanem amikor a képek odakerülnek, akkor egy adatbázisban adminisztrálod, hogy mi került fel és hova lett lerakva.
-
updog
őstag
Sziasztok!
Egy egyszerű, Tomcaten futó Java EE webappban akarok egy galériát létrehozni (szóljatok ha már rosszul indultam el).
Simán egy külső folderből akarom felolvasni a képfájlokat, és kirakni az oldalra.
Hogyan tudom ezt transzparensen csinálni? (tehát hogy ne C:\Temp\images-t kelljen mondjuk a graphicImage-nél használnom, vagy legalábbis a kódban ne így jelenjen meg?
Amire most én gondoltam, nagyon naiv próbálkozás, de legalább nem is működik
File f = new File("C:\\Temp\\images");
images = new ArrayList<>();//a view Bean változója, String ArrayList
for (File img : f.listFiles()) {
images.add(img.getAbsolutePath());
}<h:form>
<c:forEach var="item" items="#{imagesView.images}">
<h:graphicImage value="#{item}" cache="false" />
</c:forEach>
</h:form>A kódban szépen látszanak a képek elérési útjai, csak "simán" kimásolva és azt beillesztve a címsorba meg is jelennek, de magán az oldalon viszont nem jelennek meg a képek. És gondolom ennél rondább és amatőrebb módja nem is lenne ennek. google-ba beüthető kulcsszavakat is megköszönök a "gondold át hogy mit műveltél" kommentek mellé
Pl egy generált kóddarab:
<img src="C:\Temp\images\DSC_0020_th.jpg" />
-
gojko.m
senior tag
Ebben valaki tudna segíteni?
-
Taoharcos
aktív tag
Azért elnézve az álláshirdetéseket, több mint felükben a legfontosabb elvárás a JEE ismerete.
-
Lortech
addikt
válasz
<Lacy85> #9813 üzenetére
Java EE-ben JSF van, használható, de nincs benne túl sok perspektíva szerintem. Ahogy úgy általában a Java alapú frontend fejlesztésben.
Elhangzott már a GWT és Vaadin, előbbi alacsonyabb szintű, jól kiforrott megoldás, utóbbival gyorsan lehet használható frontendet készíteni.
Van még sok egyéb, pl. a Play fw, vagy az Apache webes frameworkök mint Struts/2, Wicket, Tapestry, Stripes.
Ott van a Spring (web) MVC pl. thymeleaffel.
Én már nem tervezek/fejlesztek új projekten java alapokon frontendet, a legtöbb esetben java az API-kat szolgáltatja, valamint a middleware-t, backendet, a frontend pedig böngészőben fut valamelyik javascript alapú frameworkön/libraryben megvalósítva, pl. React, Vue.js vagy Angular valamelyikében. -
Lortech
addikt
válasz
<Lacy85> #9811 üzenetére
Új frontend fejlesztésre JSP-t nem javaslom, egyáltalán nem. Függetlenül az Oracle és Java EE viszonyától, mert ez itt irreleváns. JSP már nem fog fejlődni érdemben, ha Oracle diktál Java EE fronton, ha nem.
Érdemes lehet max pár órát rászánni, megnézni, hogy ilyen is volt, hozzátartozik az evolúcióhoz címszóval, kipróbálod, megérted, pipa, next. Servlet speccel azért érdemes lehet tisztában lenni.A "dobja az Oracle" lehet pozitív vagy negatív is, én inkább pozitívumként élem meg, hogy hátralép egyet és átengedi a communitynek az irányítást, a tényleges következményeket utólag lehet majd értékelni. A jelenlegi állapotában a Java EE egy használható platform. Amire nincs jelenleg Java EE spec, és reális igény, azt belegózhatod majd külső libraryként a stackbe, mint ahogy teheted most is. Én akkor se aggódnék néhány éves távlatban, ha nem volna egyáltalán Java EE fejlesztés. De erről nincs szó.
-
<Lacy85>
addikt
válasz
Aethelstone #9809 üzenetére
Hmmm. Lehet, hogy rosszul fogalmaztam.
Nem a JSP-t akarom megtanulni elmélyedés címszó alatt, hanem majd a későbbiekben szeretnék pár weboldalt összedobni JSP alatt.
Előtte természetesen végigrágom magam kb. a HelloWorld-től a Spring-ig.
Csak az érdekelne, hogy szerintetek mennyire lehet alapozni az EE + JSP-re most, hogy dobja az Oracle. -
<Lacy85>
addikt
Sziasztok!
Egy kis tanácsra lenne szükségem Java téren.
El akarok mélyülni a programnyelvben, és hosszabb távon szeretnék pár (egyelőre hobbi) projektet megvalósítani JSP alatt.
Ez ha jól tudom, akkor a Java EE része, amit viszont épp most dob ki az Oracle, és adja oda az egészet az Eclipse-nek.
Szóval hosszabb távon megéri erre építeni? Tudom, hogy van egy rakás nyelv webfejlesztéshez, de érdekel a Java. Viszont így most vakarom egy kicsit a fejem, hogy mi legyen... -
Gyick
őstag
Hali!
Lenne egy Netbeans-es kérdésem.Több projectemnél is van a project vagy a package nevén kis piros felkiáltójel Contains files with errors hibaüzenettel.Ez mitől van?A kód ettől még hibátlanul lefut.(persze nem mindig
)
Suliban a gép ahol ülök annál ugyanez a helyzet van.Pedig teljesen más fájlok vannak azon a gépen. -
Jhonny06
veterán
válasz
Philips103 #9802 üzenetére
Első körben:
C:\Program Files\NetBeans 7.x\etc\netbeans.conf
Change the following line to point it where your java installation is :
netbeans_jdkhome="C:\Program Files\Java\jdk1.7xxxxx"
You may need Administrator privileges to edit netbeans.conf
-
bambano
titán
ha találgatnom kellene, azt találgatnám, hogy letöltött egy jdk-t, azzal felrakta a netbeanst.
a netbeans belevarrja a konfigba, hogy hol van a jdk. viszont amikor upgradelte a jávát, akkor a régit levette, az új meg máshol van, pláne, ha a verziószám benne van az elérési útban. -
Szmeby
tag
válasz
Philips103 #9802 üzenetére
Szia,
linux, windows, micsoda? Amikor azt mondod, hogy letöltötted a javat, akkor jre-t vagy jdk-t töltöttél le? Tök jó, hogy eddig eljutottál, már nem sok van hátra. Ha letöltötted, telepítsd is fel.
A jdk_home nekem egy környezeti változónak tűnik a neve alapján (bár azok nagybetűsek szoktak lenni és nekem JAVA_HOME rémlik), ha az, vedd fel. A jdk1.8.0_171 érzésem szerint nem egy fájl, hanem egy könyvtár, és ott találod, ahova azt a bizonyos javat feltelepítetted. Keress rá. Az elérési utat kell megadni a környezeti változóban.
Bár nem használom, de a Netbeans ugyebár egy fejlesztőeszköz, ami megkönnyíti a java programok írását, és mint olyan, szüksége van a jdk-ra, amivel a kódot lefordíthatja. Tudnia kell, hogy hol találja. Ha csak sima szövegszerkesztőben írnál programot, akkor neked is szükséged lenne a jdk-ra, amivel a java osztályaidat bájtkódra fordíthatod. Nem a Netbeanstől lesz java programod, hanem a jdk-tól, a NB csak egy segédeszköz.A suliban nem mondja el a tanár, hogy hogyan készül a java program? Miért nem? A tanárt kérdezted már a problémádról? Miért nem segített?
Én, amikor kérdést teszek fel, igyekszem nem pongyolán fogalmazni, mert tudom, hogy ha én nem veszem a fáradságot arra, hogy minél jobban megértessem a problémám másokkal, más se veszi a fáradságot, hogy dekódolja a mondandóm.
Amúgy:
https://www3.ntu.edu.sg/home/ehchua/programming/howto/JDK_Howto.html -
Philips103
tag
Sziasztok!
Biztos ezren kérdezték már és remélem jó helyen is vagyok a kérdésemmel.
De a suliba tök faszán fut a netbeans, és itthon a gépem nem akarja, hogy én használjam..Először letöltöttem a netbeans 8.2t amibe minden benne, ami nekem kell. Eddig jó volt.
Aztán kiírta, hogy töltsem le a java legfrissebb verzióját, de ez se segített és most már, ami java fenn van a gépemen, és azt írja, hogy nem találja a jdk_home-on belül a jdk 1.8.0_171es fájlt..-.-
Egyszerűen meg vagyok lőve és nem vágom mit is kéne csinálnom
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- T14s Gen4 14" FHD+ IPS i7-1365U 16GB 512GB NVMe magyar bill IR kam gar
- Gopro hero 7 black
- ThinkBook 16p Gen3 16" QHD+ IPS Ryzen 5 6600H RTX 3060 16GB 512GB NVMe ujjlolv gar
- ThinkBook 16p Gen3 16" QHD+ IPS Ryzen 5 6600H RTX 3060 16GB 512GB NVMe ujjlolv gar
- HP Probook 640 G2 (14FHD/i3-G6/8GB/256SSD/Magyar/Win11) - Szép!
- AKCIÓ! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
- 122 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- Csapj le az új MSI MPG B550 GAMING PLUS-ra most! 0% THM-RE is!
- TELJES KÖRŰ IT BESZERZÉS
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest