Hirdetés

Keresés

Új hozzászólás Aktív témák

  • disy68
    aktív 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! :)

    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

    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! :)

    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

    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)

    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

    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)

    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

  • skoda12
    aktív 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...)

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

  • Mirman
    őstag

    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...)

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

  • Mirman
    őstag

    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?

    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 .

  • Szmeby
    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

    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

    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

    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.

  • Lortech
    addikt

    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);

    Nullra kell vizsgálnod:
    if (AskDeviceName == null) { ... }

    Egymásnak ellentmondóak, amiket írsz, vagy valami nagyon béna API-d van, ami egy sima get-re is mellékhatással jár és/vagy nem konzisztens, egyszer működik, egyszer nem.

  • Aethelstone
    addikt

    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/purejavahidapi

    Van 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 MOUSE

    Azt 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.

    Van egy kis kavar. Egy String az instanceof-ra akkor is true, ha nincs inicializálva, azaz null értékű.

  • bambano
    titán

    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 :P)
    3, Értékadás (inicializálás) // x=1;

    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.

  • Mirman
    őstag

    De akkor mért nem null-t kapok? Exception-t dob.

    Null pointer exceptiont kapsz. Ez azt jelenti hogy az a referencia amit viszgalsz null ertekre mutat a memóriában .

  • Mirman
    őstag

    Köszi, kipróbálom, ha odajutok! :R
    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?

    Sajnos hülyeség mert nem közvetlenül próbálod elérni a mezőt hanem egy get... függvényen keresztül. Előfordulhat hogy a mezo nincs inicializalva ( nincs neki érték adva) , de ekkor a függvény nullal tér vissza.

  • bambano
    titán

    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).

    én arra szoktam tesztelni, hogy null-e vagy sem...
    if (info.getProductString()!=null)

  • skoda12
    aktív 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/purejavahidapi

    Van 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 MOUSE

    Azt 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.

    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.

  • RexpecT
    addikt

    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/purejavahidapi

    Van 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 MOUSE

    Azt 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.

    Talán ez a probléma: [link]

  • Aethelstone
    addikt

    Most már jó... :W :R :Y Elnézést a buta kérdésem miatt, amire megtaláltam a választ. Ez az internetes lexikonok "TÉMA OFF" címszavára a tökéletes példa. A "semmi értelme az írásomnak" című fejezetet olvastátok. :C

    :D

  • Aethelstone
    addikt

    Bocsánat, az i akart lenni. Tehát az i-re vagyok kíváncsi, mért nem írja ki. :\

    Mit adtál meg a-nak és c-nek? Meg nem ártana a for ciklus magját kapcsos zárójelek közé tenni, mert nem egyértelmű két sorból, hogy a sysout a magban van vagy a ciklus után. Legalábbis nekem nem :) (látszólag a magban)

  • PumpkinSeed
    addikt

    Nem értem, mert nem tudok eleget. :( Okítsatok ki pls.
    .....
    for (int i=c; i<=a; i++)
    System.out.println (i);

    a, és c értéket én adok meg console-ról.

    Mért nem írja ki a b-t a végén?
    Beadom a két értéket, és vége. BUILD SUCCESSFUL

    Hogyan tudnék olyat csinálni, hogy én adom meg neki console-ról, hogy honnan, és meddig (esetleg milyen lépésszámmal) lépjen a ciklus?
    (vagy egy random függvényt integrálnék bele, hogy ez a későbbiekben létrehozzon nekem egy megfelelő mennyiségű adathalmazt, amivel majd dolgozhatok (gyakorolhatok).)

    A "b" mit takar?

  • bucsupeti
    senior tag

    Köszönöm a segítőkész és gyors választ, de ettől még nem értem. :\ (természetesen elismerem, hogy nagyon "alap" dolgokat lehet nem ismerek, ezért elnézést kérek tőletek)

    A ciklusfejben és a ciklusmagban is van egy növelése a ciklusváltozónak.

    A System.out.print (++i +" "); sorban legelőször az i értéke növekszik, majd kiirásra kerül.
    System.out.print (n++ +" "); sorban először kiirásra kerül az n majd utána növekszik az értéke.

    Még annyit hozzátennék hogy szerintem a növekményes ciklusban (for) ne piszkáljuk a ciklusváltozót a ciklusmagban. Ha erre szükség van akkor ne for hanem while ciklust kell alkalmazni.

    Utálom amikor eröltetett példákkal próbálják magyarázni egy-egy nyelvi elem működését. Ennél már csak a "mutatóramutatómutatóttatalmazómutató" a szebb amit C-ben szoktak példázni, de a gyakorlatban ilyen soha nem jön elő.

  • Jim-Y
    veterán

    Köszönöm a segítőkész és gyors választ, de ettől még nem értem. :\ (természetesen elismerem, hogy nagyon "alap" dolgokat lehet nem ismerek, ezért elnézést kérek tőletek)

    Szia, pszeudo-magyarázat :)

    ciklus 1-től 10-ig
    ciklusváltozó explicit inkrementálása
    print ciklusváltozó
    ciklusváltozó implicit inkrementálása
    ciklus vége

    másik eset:

    ciklus 1-től 10-ig
    print ciklusváltozó
    ciklusváltozó explicit inkrementálása
    ciklusváltozó implicit inkrementálása
    ciklus vége

    Nézzük konkrétan, hogy a ciklus első periodusában mi történik:

    első esetben:

    i = 1
    i = i + 1
    print(i) // 2
    i = i + 1 // i == 3

    másik esetben

    i = 1
    print(i) // 1
    i = i + 1 // i == 2
    i = i + 1 // i == 3

  • sztanozs
    veterán

    Sziasztok!
    Most kezdtem a java-t tanulgatni, és nem értem a logikai sorrendet a két for ciklussal kapcsolatban, ami alapján kijön ez az eredmény:

    for (byte i=1; i<=10; i++)
    System.out.print (++i +" ");


    for (byte n=1; n<=10; n++)
    System.out.print (n++ +" ");

    i értékre 2 4 6 8 10-et kapok
    n értékre 1 3 5 7 9 -et. Mi különbség a ++i és i++ közt? Netet túrva (nem elég huzamos ideig, lehet az a baj) nem találtam rá választ. :\

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

    ++n kiértékelés (inkrementálás) után i++ pedig azelőtt adja át az értéket.
    [link]

Új hozzászólás Aktív témák