Java Lotto

Ongelmana olisi lisänumeroiden saanti kyseiseen ohjelmaan. Ja lisänumeroiden pitäisi olla OMASSA taulukossaan "lottolisa = new int[3];", eikä tietenkään samoja numeroita saa tulla varsinaisen lottorivin kanssa. Olen tähän toisenlaisen ratkaisun kehittänyt (missä käytettiin samaa taulukkoa lisänumeroissa kuin varsinaisessa lottorivissä), mutta se ei kelpaa, joten auttava käsi olisi 5h miettimisen jälkeen tarpeen.

Tässä pohja mihin pitäisi kehittää lisänumerot:

public class Lottonumerot {

public static int[] lottorand;
public static int[] lottolisa;

public static void arvolotto() {

lottorand = new int[7];
lottolisa = new int[3];
boolean sopii = true;

for (int i = 0; i < lottorand.length; i ) {
int uusi = 1 (int) (39 * Math.random());
for (int j = 0; j < i; j ) {
if (lottorand[j] == uusi) {
sopii = false;
i--;
break;
}
}
if (sopii) {
lottorand[i] = uusi;
}
sopii = true;
}


System.out.print("Lottorivi: ");
for (int j = 0; j < lottorand.length; j ) {
System.out.print(lottorand[j] " ");
}

System.out.print("\nLisänumerot: ");
for (int j = 0; j < lottolisa.length; j ){
System.out.print(lottolisa[j] " ");
}
}

public static void main(String[] args) {
arvolotto(); }}
91667
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Tarvitset vain yhden taulukon jossa on kaikki lottonumerot 1-39. Sitten sekoitat sen tuon koodin avulla:
http://en.wikipedia.org/wiki/Fisher–Yates_shuffle#Example_implementations

Ja tulostat taulukon 7 ekaa numperoo ja kolme seuraavaa numperoo lisänumeroiksi....

Yksinkertaista kun sen osaa.... kannattaa lukea tuo wikin selostus tarpeeksi perusteellisesti jotta varmasti ymmärtää homman. Opettavaista on se.

Äänestä
  • Muuten kyllä voisin tehdä niin, mutta tarvitsisin tuon public static int[] lottolisa; taulukon myöhempää vaihetta varten missä verrataan käyttäjän syöttämiä numeroita lottonumeroihin ja lisänumeroihin. Ja pysytyisin tulostamaan esim

    if (oikein == 6 && oikeinlisa > 0)
    System.out.println("\n\nLottorivilläsi oli: " oikein " ja lisänumero oikein");

    Jos teen yhteen taulukkoon, pystynkö tekemään homman noin, että vertaa osuiko lisänumero oikeaan? Vai ilmoittaako vain:

    System.out.println("\n\nLottorivilläsi oli: " oikein " oikein");

    Äänestä

  • waxpopopopo kirjoitti:

    Muuten kyllä voisin tehdä niin, mutta tarvitsisin tuon public static int[] lottolisa; taulukon myöhempää vaihetta varten missä verrataan käyttäjän syöttämiä numeroita lottonumeroihin ja lisänumeroihin. Ja pysytyisin tulostamaan esim

    if (oikein == 6 && oikeinlisa > 0)
    System.out.println("\n\nLottorivilläsi oli: " oikein " ja lisänumero oikein");

    Jos teen yhteen taulukkoon, pystynkö tekemään homman noin, että vertaa osuiko lisänumero oikeaan? Vai ilmoittaako vain:

    System.out.println("\n\nLottorivilläsi oli: " oikein " oikein");

    Kyllä se sillä yhdelläkin onnistuu, mutta on selkeämpää koodia että teet arvonnan sillä koko 1-39 taulukolla ja sen jälkeen kopioit 7 ekaa 3 lisänumeroo omiin taulukoihinsa ja teet vertailut käyttäjän numeroista näihin.

    Äänestä

  • kjfkjaskadnadsdsd kirjoitti:

    Kyllä se sillä yhdelläkin onnistuu, mutta on selkeämpää koodia että teet arvonnan sillä koko 1-39 taulukolla ja sen jälkeen kopioit 7 ekaa 3 lisänumeroo omiin taulukoihinsa ja teet vertailut käyttäjän numeroista näihin.

    Voisitkohan pistää vähän näyttöä tuohan samaan alla olevaan ohjelmaan, koska en ole kovin haksi koodaamaan ja yritin kyllä tuotakin. En oikein tajua miten sen voisi toteuttaa. Ilmeisesti taulukon koko pitäisi muuttaa new int[10]; ja arvontaan jotenkin lisätä tuo LOTTOLISA for (int i = 0; i < lottorand.length && i < lottolisa.lenght; i ) { en kyllä nyt osaa.

    public class Lottonumerot {

    public static int[] lottorand;
    public static int[] lottolisa;

    public static void arvolotto() {

    lottorand = new int[7];
    lottolisa = new int[3];
    boolean sopii = true;

    for (int i = 0; i < lottorand.length; i ) {
    int uusi = 1 (int) (39 * Math.random());
    for (int j = 0; j < i; j ) {
    if (lottorand[j] == uusi) {
    sopii = false;
    i--;
    break;
    }
    }
    if (sopii) {
    lottorand[i] = uusi;
    }
    sopii = true;
    }


    System.out.print("Lottorivi: ");
    for (int j = 0; j < lottorand.length; j ) {
    System.out.print(lottorand[j] " ");
    }

    System.out.print("\nLisänumerot: ");
    for (int j = 0; j < lottolisa.length; j ){
    System.out.print(lottolisa[j] " ");
    }
    }

    public static void main(String[] args) {
    arvolotto(); }}

    Äänestä

  • waxpopopopo kirjoitti:

    Voisitkohan pistää vähän näyttöä tuohan samaan alla olevaan ohjelmaan, koska en ole kovin haksi koodaamaan ja yritin kyllä tuotakin. En oikein tajua miten sen voisi toteuttaa. Ilmeisesti taulukon koko pitäisi muuttaa new int[10]; ja arvontaan jotenkin lisätä tuo LOTTOLISA for (int i = 0; i < lottorand.length && i < lottolisa.lenght; i ) { en kyllä nyt osaa.

    public class Lottonumerot {

    public static int[] lottorand;
    public static int[] lottolisa;

    public static void arvolotto() {

    lottorand = new int[7];
    lottolisa = new int[3];
    boolean sopii = true;

    for (int i = 0; i < lottorand.length; i ) {
    int uusi = 1 (int) (39 * Math.random());
    for (int j = 0; j < i; j ) {
    if (lottorand[j] == uusi) {
    sopii = false;
    i--;
    break;
    }
    }
    if (sopii) {
    lottorand[i] = uusi;
    }
    sopii = true;
    }


    System.out.print("Lottorivi: ");
    for (int j = 0; j < lottorand.length; j ) {
    System.out.print(lottorand[j] " ");
    }

    System.out.print("\nLisänumerot: ");
    for (int j = 0; j < lottolisa.length; j ){
    System.out.print(lottolisa[j] " ");
    }
    }

    public static void main(String[] args) {
    arvolotto(); }}

    Kopiointi:
    int[] lottopallot = {1,2,../ muut numerot/..,39};

    System.arraycopy(lottopallot, 0, lottorand, 0, 7);
    System.arraycopy(lottopallot, 7, lottolisa, 0, 3);

    Kyllä vastaukset noin helppoihin pitäisi löytyä ihan kuuklaamalla....

    Äänestä

  • dakjsdksadjasdljasla kirjoitti:

    Kopiointi:
    int[] lottopallot = {1,2,../ muut numerot/..,39};

    System.arraycopy(lottopallot, 0, lottorand, 0, 7);
    System.arraycopy(lottopallot, 7, lottolisa, 0, 3);

    Kyllä vastaukset noin helppoihin pitäisi löytyä ihan kuuklaamalla....

    Kyllä varmaan löytyy, mutta olen tosiaan yhden kurssin käynyt ohjelmointia vasta, enkä oikeen osaa soveltaa vielä. En kyllä tajunnut esimerkkiäsi(?) tarvisin selkeämmät ohjeet, mutta ehkä niitä apuja ilmaantuu päivemmällä kun aluksi haihdun tästä nukkumaan.

    Äänestä

  • waxpopopopo kirjoitti:

    Kyllä varmaan löytyy, mutta olen tosiaan yhden kurssin käynyt ohjelmointia vasta, enkä oikeen osaa soveltaa vielä. En kyllä tajunnut esimerkkiäsi(?) tarvisin selkeämmät ohjeet, mutta ehkä niitä apuja ilmaantuu päivemmällä kun aluksi haihdun tästä nukkumaan.

    "Jäsentä joka vastaisi nimimerkkiä waxpopopopo ei löytynyt"...

    Äänestä

  • 17+14 kirjoitti:

    "Jäsentä joka vastaisi nimimerkkiä waxpopopopo ei löytynyt"...

    Johtuiskohan vaikka siitä etten ollut aktivoinut tiliäni?? Nyt niitä selkeitä vinkkejä kiitos.

    Äänestä

  • waxpopopopo kirjoitti:

    Kyllä varmaan löytyy, mutta olen tosiaan yhden kurssin käynyt ohjelmointia vasta, enkä oikeen osaa soveltaa vielä. En kyllä tajunnut esimerkkiäsi(?) tarvisin selkeämmät ohjeet, mutta ehkä niitä apuja ilmaantuu päivemmällä kun aluksi haihdun tästä nukkumaan.

    Siis
    1) sekoitetaan pallot linkissä olevalla koodilla.
    2) kopioidaan arraycopy-funktiolla haluttuihin taulukoihin. (voit tietysti tehdä myös oman kopiointi koodin)
    Lisäksi jatko esim.
    3) järjestetään taulukot Javan sort-hommelilla (googlaa sort array java)
    4) etsitään osumat joukko-opin tapaan leikkauksella (googlaa intersection java array)
    5) tulostetaan arvottu rivi, lisänumerot, pelaajan rivi, monta oikein ja mah. lisänumero oikein

    Mikä on vielä epäselvää?

    Äänestä

Kommentoi aloitusta


waxpopopopo kirjoitti:

Ongelmana olisi lisänumeroiden saanti kyseiseen ohjelmaan. Ja lisänumeroiden pitäisi olla OMASSA taulukossaan "lottolisa = new int[3];", eikä tietenkään samoja numeroita saa tulla varsinaisen lottorivin kanssa. Olen tähän toisenlaisen ratkaisun kehittänyt (missä käytettiin samaa taulukkoa lisänumeroissa kuin varsinaisessa lottorivissä), mutta se ei kelpaa, joten auttava käsi olisi 5h miettimisen jälkeen tarpeen.

Tässä pohja mihin pitäisi kehittää lisänumerot:

public class Lottonumerot {

public static int[] lottorand;
public static int[] lottolisa;

public static void arvolotto() {

lottorand = new int[7];
lottolisa = new int[3];
boolean sopii = true;

for (int i = 0; i < lottorand.length; i ) {
int uusi = 1 (int) (39 * Math.random());
for (int j = 0; j < i; j ) {
if (lottorand[j] == uusi) {
sopii = false;
i--;
break;
}
}
if (sopii) {
lottorand[i] = uusi;
}
sopii = true;
}


System.out.print("Lottorivi: ");
for (int j = 0; j < lottorand.length; j ) {
System.out.print(lottorand[j] " ");
}

System.out.print("\nLisänumerot: ");
for (int j = 0; j < lottolisa.length; j ){
System.out.print(lottolisa[j] " ");
}
}

public static void main(String[] args) {
arvolotto(); }}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu