Onkelma

**JJ

Eli mun pitäs tehdä ohjelma joka kysyy käyttäjältä, montako lukua generoidaan taulukkoon. määrän saatua se generoi luvut, lajittelee ne ja lopuksi tulostaa taulukon käyttäjälle.
Tämän jälkeen ohjelman pitäis kysyä käyttäjältä, anna alaraja ja yläraja.
Esim. käyttäjä olis alunperin halunnut generoida 5lukua taulukkoon ja ohjelma tulostais sille vaikkapa 10, 23, 54, 88, 100.
Tämän jälkeen käyttäjä antais alarajaksi 23 ja ylärajaksi 88.. jolloin ohjelman pitäisi tavallaan luoda uus taulukko johon tulisi vain ne luvut jotka on annetulla arvovälillä, eli tässätapauksessa 23, 54, 88.

Olen saanut ohjelman toimimaan siihen asti kunnes kysytään ala ja ylärajaa.. Olisko jollakin vinkkejä miten saisin aikaseksi tuon uuden taulukon luonnin joka sisältää vain ne luvut jotka on annetulla arvovälillä?

6

584

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • vastaus on

      Jos halutaan generoida nopan(luvut 1-6) heittoa tapahtuu se näin: Random noppa = new Random(); int luku = noppa.nextInt(6) 1;
      Taulukon luonti tapahtuu aivan samanlailla kuten aiememinkin.

    • kiikastaa?

      Teet vaan uuden taulukon ja käyt vanhan taulukon alkioittain läpi ja jos se on suurempi tai yhtäsuuri kuin alaraja ja pienempi tai yhtäsuuri kuin yläraja niin se kopioidaan uuteen taulukkoon.

      Onko tässä joku erityinen "ongelmakohta"?

      • **JJ

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.


      • voinut lukea
        **JJ kirjoitti:

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.

        aluksi kunnolla tuon kysymyksen.
        Kaikkein yksinkertaisin on tietenkin et luot uuden arraylistin, käyt läpi vanhan listan ja lisäät sopivat alkiot uuteen listaan.
        Jos haluat käyttää tuota arraycopya niin tarvitset alarajan ja ylärajan indeksit. Näistä pystyt laskemaan kopioitavien alkioiden määrän ja mistä kohdasta kopiointi alkaa. Jotta tämä tapa olisi tehokas niin joudut miettimään, että millaisella hakualgoritmilla haet indeksit.


      • tuota
        **JJ kirjoitti:

        Siitä kiikastaa, että kuinka tuo kopioiminen oikeen vois tapahtua.

        Sen tiedän, että kopionti normaalisti tapahtuisi jotenkin esim näin:
        System.arraycopy(taulu1, 1, taulu2, 0, 3);

        mutta tuossahan jo tiedetään, että montako lukua ollaan kopioimassa uuteen taulukkoon, eli 4.
        Mutta tässä tehtävässähän ei ennalta tiedä kuinka monta alkiota tullaan uuteen tauluun kopioimaan, niin se tuottaa harmaita hiuksia.

        Ei kannata hienostella ja tehdä kopiointia yhdellä käskyllä (arraycopy) näin pienissä lukumäärissä kun sillä ei ole suorituskyvyn kannalta mitään merkitystä.

        Eli käyt vaan silmukalla läpi kaikki taulu1:sen alkiot ja ehdon täyttävät kopioit aina taulu2:seen ja kasvatat sen indeksiä yhdellä.


      • **JJ
        tuota kirjoitti:

        Ei kannata hienostella ja tehdä kopiointia yhdellä käskyllä (arraycopy) näin pienissä lukumäärissä kun sillä ei ole suorituskyvyn kannalta mitään merkitystä.

        Eli käyt vaan silmukalla läpi kaikki taulu1:sen alkiot ja ehdon täyttävät kopioit aina taulu2:seen ja kasvatat sen indeksiä yhdellä.

        Ohjelma toimii ja kiitoksia vinkeistä kaikille.

        Tähän vastaan, että ohjelman alussahan käyttäjältä kysytään, että montako lukua hän haluaa generoida.. se voi olla 2 tai vaikkapa 2000.. eli lukumäärähän ei ennalta ole tiedossa.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Janne Ahonen E R O A A

      Taas 2 lasta jää vaille ehjää perhettä!
      Kotimaiset julkkisjuorut
      147
      2589
    2. En kai koskaan saa sinua

      Koska et usko että riitäisit minulle. Olet aina pitänyt itseäsi liian risana ja heikkona. Katkot korkeutesi, ja poraat k
      Ikävä
      154
      1659
    3. Terveystalon lääkärit ylilaskuttaneet

      Tämän pörriäiset osaavat, laskuttamisen. Terveystalo myöntää asian. https://www.hs.fi/suomi/art-2000011134269.html "K
      Maailman menoa
      133
      1633
    4. Saran ökytyyli käänsi katseita.

      On nyt kyllä Sara kasvoistaan, kuvan perusteella todellakin pyöristynyt ainakin kuvan perusteella.
      Kotimaiset julkkisjuorut
      149
      1358
    5. Nyt on aika laittaa parit selkoon.

      Onko pareja täällä. Laita kirjaimet kuka tykkää kenestäkin ?
      Ikävä
      66
      1338
    6. The Summit Suomi: Maxie avaa hyytävästä tilanteesta kuvauksissa: "Veri roiskui ja tajusi, että..."

      Oletko seurannut The Summit Suomea? Tykkäätkö vai et tai mitä mieltä ylipäätään olet sarjasta? Moni katsoja on kaikonnut
      Tv-sarjat
      13
      1180
    7. Työttömille lusmuille luvassa lisää keppiä

      Hallitus aikoo kiristää velvoitteiden laiminlyönnistä seuraavia työttömyysturvan karensseja ensi vuodesta alkaen. Hall
      Maailman menoa
      282
      1165
    8. Ootko huomannut miten

      pursuat joka puolelta. Sille joka luulee itsestään liikoja 🫵🙋🏻‍♂️
      Ikävä
      156
      976
    9. Miksi ihmeessä?

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek
      Ateismi
      22
      924
    10. Tiedän kaiken sinusta ja kaikesta

      Tiedän miten kärsit. Tiedän millanen oikeesti oot. Tiedän miksi valehtelit, tiedän miksi satutit mua. Tiedän mitä tapaht
      Ikävä
      58
      889
    Aihe