Hirdetés

Keresés

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

  • Szmeby
    tag

    Sziasztok!

    Abszolút kezdőként ismerkedem a Java nyelvvel.
    A Kiválogatás programozási tételét szeretném megcsinálni.
    JavaScriptben sikerült is összehozni, de Java-ban az a gondom, hogy mindenképp meg kell határozni előre a tömb méretét, míg JS-ben nem kellett. Persze lehet, hogy rosszul tudom. :)

    Az ArrayList használata nélkül megoldható?

    int tomb[] = {2,6,12,8,5,3,16};
    int j = 0;
    int[] ujTomb; //itt ugye ez nem működik
    for(int i=0;tomb.length > i;i++){

    if(tomb[i] > 8 ){
    ujTomb[j++] = tomb[i];
    }
    }

    System.out.println("J értéke:" + j);

    A harmadik opció a láncolt lista használata. Magad is összerakhatsz egy primitív implementációt belőle, ha tilos használni a feladathoz a LinkedList és hasonló beépített megoldásokat.

    Szerk.: De tény, hogy a leggyorsabb és kézenfekvőbb inicializálni az eredeti tömb méretével... esetleg a végén - amikor már ismert a végleges méret - átmásolni egy pont passzoló méretű tömbbe az eredményeket.

  • Retekegér
    MODERÁTOR

    Sziasztok!

    Abszolút kezdőként ismerkedem a Java nyelvvel.
    A Kiválogatás programozási tételét szeretném megcsinálni.
    JavaScriptben sikerült is összehozni, de Java-ban az a gondom, hogy mindenképp meg kell határozni előre a tömb méretét, míg JS-ben nem kellett. Persze lehet, hogy rosszul tudom. :)

    Az ArrayList használata nélkül megoldható?

    int tomb[] = {2,6,12,8,5,3,16};
    int j = 0;
    int[] ujTomb; //itt ugye ez nem működik
    for(int i=0;tomb.length > i;i++){

    if(tomb[i] > 8 ){
    ujTomb[j++] = tomb[i];
    }
    }

    System.out.println("J értéke:" + j);

    Esetleg inicializálhatod az új tömb méretét a régi tömb méretével:

    int[] ujTomb = new int[tomb.length];

  • Sirpi
    senior tag

    Sziasztok!

    Abszolút kezdőként ismerkedem a Java nyelvvel.
    A Kiválogatás programozási tételét szeretném megcsinálni.
    JavaScriptben sikerült is összehozni, de Java-ban az a gondom, hogy mindenképp meg kell határozni előre a tömb méretét, míg JS-ben nem kellett. Persze lehet, hogy rosszul tudom. :)

    Az ArrayList használata nélkül megoldható?

    int tomb[] = {2,6,12,8,5,3,16};
    int j = 0;
    int[] ujTomb; //itt ugye ez nem működik
    for(int i=0;tomb.length > i;i++){

    if(tomb[i] > 8 ){
    ujTomb[j++] = tomb[i];
    }
    }

    System.out.println("J értéke:" + j);

    A tömb fix méretű, valóban nem tudsz ilyet csinálni.
    Használhatsz helyette ArrayList-et, viszont akkor nem tudsz primitív típust tárolni benne, csak Integer-t.
    A másik megoldás a Java 8 és a Stream API:

    int tomb[] = {2,6,12,8,5,3,16};
    int ujTomb[] = Arrays.stream(tomb).filter(k -> k > 8).toArray();

    vagy ha csak a darabszám érdekel:

    long count = Arrays.stream(tomb).filter(k -> k > 8).count();

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