Oldal: 4 / 5 ElsőElső ... 2345 UtolsóUtolsó
Eredmény: 31 - 40 (46) összesen

Téma: Java gyakorlás

  1. #31
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Szerintem dragon megoldása nem feltétlen jó, ld. az equals metódus pontos leírását (ami csak akkor igaz, hogyha a két lista azonos elemszámú és azonos elemeket tatalmaz, ami ebben az esetben konkrétan soha nem lesz igaz, a contains metódussal lenne helyes). Amit én tudok, hogy a talán leghatékonyabb erre, hogyha feltöltesz egy tömböt 1-től n-ig, randomizálod az elemek sorrendjét, majd kiveszed belőle az első k darabot. Így k teljesen különböző, 1-n között lévő elemet kapsz. De amúgy gyors guglizás után (pl. "get unique random elements java") erre is rá lehetett volna persze találni.



  2. #32
    Bölcs
    Csatlakozott
    10-01-15
    Hely
    Győr
    Hozzászólás
    589
    Begyűjtött 32 köszönetet
    30 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Idézet Emphus eredeti hozzászólása Hozzászólás megtekintése
    Szerintem dragon megoldása nem feltétlen jó, ld. az equals metódus pontos leírását (ami csak akkor igaz, hogyha a két lista azonos elemszámú és azonos elemeket tatalmaz, ami ebben az esetben konkrétan soha nem lesz igaz, a contains metódussal lenne helyes). Amit én tudok, hogy a talán leghatékonyabb erre, hogyha feltöltesz egy tömböt 1-től n-ig, randomizálod az elemek sorrendjét, majd kiveszed belőle az első k darabot. Így k teljesen különböző, 1-n között lévő elemet kapsz. De amúgy gyors guglizás után (pl. "get unique random elements java") erre is rá lehetett volna persze találni.
    Valóban elnéztem a dolgot, viszont a te módszerednél mi biztosítja, hogy nem lesz ismétlődés ?
    Egyébként a
    Kód:
    Arrays.asList(tomb).contains(randNum)
    , sem azt csinálja amire gondoltam, mert azzal sem jó, ha lesz egy kis időm vizsgaidőszak után átnéztem a Java-t rég volt.

    Ez már jó lesz. (remélem )
    Kód:
        public int[] veletlen(int min,int max,int db){
            int randNum;
            int[] tomb = new int[db];
    
                for(int i=0;i!=db;i++)
                {
                    do{randNum = (int)(min + (int)(Math.random()*max));}
                    while(ArrayUtils.contains(tomb, randNum));
                    tomb[i] = randNum;
                }
            return tomb;
        }



    Utoljára módosítva: dragon1993 által : 2015-01-13 21:56

  3. #33
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Idézet dragon1993 eredeti hozzászólása Hozzászólás megtekintése
    Neki fontos ,hogy 2x ne szerepeljen benne ugyan az a szám.
    A sample-el nem fog ketszer szerepelni ugyanaz. N szamu random elemet vesz ki az tombbol



  4. #34
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Idézet dragon1993 eredeti hozzászólása Hozzászólás megtekintése
    Valóban elnéztem a dolgot, viszont a te módszerednél mi biztosítja, hogy nem lesz ismétlődés ?
    Egyszerű: nincs két ugyan olyan szám a tömbben, tehát nem is tudsz két ugyan olyat kiválasztani. Egyébként ez nem az én módszerem. Keress rá a dologra, és láss csodát. Hadd ne magyarázzam már el, amikor azt is leírtam, hogy mire keresve lehet találni kismillió leírást.
    Egyébként Geri megoldása is ugyan ez, csak Rubyban van beépítve ilyen, nem kell neked megírni.

    Idézet dragon1993 eredeti hozzászólása Hozzászólás megtekintése
    Kód:
        public int[] veletlen(int min,int max,int db){
            int randNum;
            int[] tomb = new int[db];
    
                for(int i=0;i!=db;i++)
                {
                    do{randNum = (int)(min + (int)(Math.random()*max));}
                    while(ArrayUtils.contains(tomb, randNum));
                    tomb[i] = randNum;
                }
            return tomb;
        }

    Pedig jó lett volna az előző megoldás containssel, teljesen fölösleges volt átalakítani. Bár erősen suboptimális mindkettő.


    Utoljára módosítva: Emphus által : 2015-01-13 22:13

  5. #35
    Bölcs
    Csatlakozott
    10-01-15
    Hely
    Győr
    Hozzászólás
    589
    Begyűjtött 32 köszönetet
    30 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Sorry félreolvastam, az eredeti írásod, így már értem


    Az előző megoldás biztosan nem lett volna jó containssel.
    Próbáld ki: Hív meg a metódus így: veletlen(1, 2, 3) végtelen ciklus helyett kidob egy tömböt amibe ismétlődés van.


    Kód:
    public int[] veletlen(int min,int max,int db){
            int randNum;
            int [] tomb = new int[db];
    
                for(int i=0;i!=db;i++)
                {
                    do{randNum = (int)(min + (int)(Math.random()*max));}
                    while(Arrays.asList(tomb).contains(randNum));
                    tomb[i] = randNum;
                }
            return tomb;
        }



    Utoljára módosítva: dragon1993 által : 2015-01-13 22:27

  6. #36
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    De ez szerintem nem azért van, mert a contains nem úgy működik, ahogy gondoltam. Az egész kódfelépítés igazából rossz. Ha már használsz listákat, és abban keresel, maga a cucc, amiben tárolod az elemeket, jó lenne, ha lista lenne. Teljesen fölöslegesen tömb meg az átkonvertálgatás. És akkor jó lesz. De majd megnézem, br igazából annyira nem köt le.

    Egyébként a
    randNum = (int)(min + (int)(Math.random()*max));
    is rossz. Ehelyett ez kéne:
    randNum = (int)(min + (int)(Math.random()*(max-min)));

    De mindegy, szerintem a koncepció önmagában rossz. A legegyszerűbb, ha úgy csinálja, ahogy írtam.


    Utoljára módosítva: Emphus által : 2015-01-13 22:54

  7. #37
    Új tag
    Csatlakozott
    15-01-13
    Hozzászólás
    3
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Köszönöm a segítséget. Sokat segített. Egyrészt látom, milyen más módszerrel lehet ugyan azt eléri (random számok).
    Tényleg köszönöm. Íme a következő talány
    Panelt akarok létrehozni. Pontosabban felugró ablakot. Tudom importálni kell a
    javax.swing.*;-ot és más dolgok miatt is a java.io.*;-ot

    String név = " ";
    név = JOptionPane.showInputDialog(null, "Add meg a neved: ", "Kérdőív", JOptionPane.WARNING_MESSAGE);

    ennél az a gond, hogy ha cancelt nyomok, akkor "null"-t fogja beírni a névbe, tehát nem kezeli le a cancelt. Próbáltam sok féleképen, de a if (név == null){Elköszönés();}
    maximálisan hatástalan.

    int a = Integer.parseInt(JOptionPane.showInputDialog(null, "1.alma 2. körte 3. málna ", "Kedvenc gyümölcsöd:",JOptionPane.WARNING_MESSAGE));
    if(a==0){Elköszönés();}
    else if(a==2){kgy = "alma"; info2();}
    else if (a==3){kgy = "körte"; info2();}
    else if (a==1){kgy = "málna"; info2();}
    else{JOptionPane.showMessageDialog(null, "Kérlek, csak a felsorolt 3 lehetőség közöl válassz", "Hiba", JOptionPane.ERROR_MESSAGE);Gyülömölcs();}

    itt teljes mértékben az a baj, hogy a cancelt nem tudja lekezelni. Jó amit itt láttok meg sem kísérni, de legrosszabb esetben az else ágnak le kéne kezeli a dolgokat (legalábbis szerintem), de nem teszi. Exceptiont vált ki ami egyenlőre csak a sima Exceptionnal tudok kezelni.

    A kérdés több rétű. Első, hogy tudom kezelni (nem hibaként) a cancelt? Hogy tudom, ha úgy akarnám, hibakánt lekezelni azt (null értéket)?

    Kérek mindenkit, hogy most CSAK ERRE a problémára koncentráljon, ne kezdje el, hogy mi értelme ennek, meg ilyenek. Kimondottan ERRE tessék nekem választ adni. Utána, esetleg, van egy egészen már jobb megoldás én szívesen veszem.

    Előre is köszönöm: Wurgar



  8. #38
    'Say Hello To My Little Friend'
    Csatlakozott
    10-04-13
    Hely
    Budapest
    Hozzászólás
    2.784
    Begyűjtött 863 köszönetet
    659 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Legelső körben meg kéne tanulnod kódot tördelni. Aztán konvenciókat követni a változók és metódusok nevei terén. Sokkal könnyebben fog menni utána minden.

    Nem próbáltam ki, de szerintem az első megoldásod nagyjéból jónak kell legyen:
    Kód:
    String respond = JOptionPane.showInputDialog(null, "Add meg a neved: ", "Kérdőív", JOptionPane.WARNING_MESSAGE);
    if(respong == null) {
        // Nem adott választ.
    } else {
        // Adott választ és a respond változóban van.
    }
    Itt van pár példa még:
    JOptionPane showInputDialog examples | JOptionPane show input | alvinalexander.com

    Egyébként a String név = " "; sor elég csúnya. Stringet nem így hozunk létre, hanem így:
    Kód:
    String str = new String();
    A sok else if helyett pedig sokkal jobb switch-case szerkezetet használni.



  9. #39
    Új tag
    Csatlakozott
    15-01-13
    Hozzászólás
    3
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Köszönöm a segítséget. Ha már itt tartunk, tudsz ajánlani valami jó könyvet amiből tudnék tanulni? Vettem egyet, de közel sem elégítette ki a dolgokat, rengetek kérdésre nem kaptam belőle válasz.
    A könyv: Szoftverfejlesztés JAVA SE, Kövesdán Gábor, Szak kiadó, 2014.

    Egyébként a tördeléssel tisztában vagyok, csak nekem így sokkal átláthatóbb. Nyilván, ha kell akkor tördelem, de sokszor elvesztem benne, hol kezdődik, hol ér véget a {} zárójel, ezért alkalmazom ezt a módszert, ezzel együtt, itt nyilván legalább két sorba kellett volna írni.
    Továbbá a "String akármi", idáig működött, de nyilván sok mindent kell még tanuljak a dologgal kapcsolatban.

    Továbbá a Switch-case-vel is tisztában vagyok. Ezt azért alkalmaztam, mert mint ujj gyakorlat, hogy ezt a fajta módszer könnyedén letudjam írni. Általában persze ha 1-2-nél több akkor már nem az if-else if-else blokkot használom.

    Interneten rákerestem, sok mindent találtam és végül is hasznosak is voltak. Sok mindent megtudok csinálni, az még kérdés, hogy az programozóilag megfelelő-e, illetve nincs-e rá sokkal jobb megoldás.

    Illetve ha lenne valaki, aki akár személyesen heti 1-2 (inkább 1) alkalommal tudna tanítani annak örülnék, természetesen fizetnék is érte.



  10. #40
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.749
    Begyűjtött 1.432 köszönetet
    895 hozzászólásával

    Alapbeállítás re: Java gyakorlás

    Idézet Wurgar eredeti hozzászólása Hozzászólás megtekintése
    Interneten rákerestem, sok mindent találtam és végül is hasznosak is voltak. Sok mindent megtudok csinálni, az még kérdés, hogy az programozóilag megfelelő-e, illetve nincs-e rá sokkal jobb megoldás.
    Nem tudom Java-ban mennyire vannak opensource cuccok, de azokbol sokat lehet tanulni. Erdemes megnezni masok hogyan oldjanak meg hasonlo problemakat mint te, es le vonni a kovetkezteteseket. Ha jol emlekszem ebben Java-k a peldakodok: Refactoring


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

Oldal: 4 / 5 ElsőElső ... 2345 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •