java ohjelmointi teht. lottonumerot ja metodit 5kp

onko liikkeellä Java-neroja?

Seuraava tehtävä pitäisi ratkaista:
Tee metodeja hyödyntäen ohjelma, joka tarkastaa lotto-rivisi. Ohjelma kysyy oman lottorivisi (7 numeroa väliltä 1-39) ja sijoittaa sen yksiulotteiseen taulukkoon. Ohjelma arpoo oikean rivin (7 numeroa väliltä 1-39) ja sijoittaa sen toiseen yksiulotteiseen taulukkoon. Lopuksi ohjelma tarkistaa rivin ja tulostaa oikeiden numeroiden määrän. Huom! Rivit eivät saa sisältää samaa numeroa useaan kertaan.
Ohjelma voisi sisältää esimerkiksi seuraavat metodit:
- Metodi, joka syöttää oman rivin.
- Metodi, joka arpoo oikean rivin.
- Metodi, joka tarkastaa, ettei rivi sisällä samoja numeroita.
- Metodi, joka tarkastaa oikeiden numeroiden määrän ja tulostaa sen.
- Metodi, joka tulostaa rivit.

Olen saanut tehtävän alkuun:
class H3
{
public static void main(String[] args)
{ int[] oikeaRivi = new int[7];
int[] lottonumerot = new int[7];
int [] oikeaRivi=0;

for(int i=0;i<lottonumerot.length;i )
{
int luku=Lue.kluku();
lottonumerot[i]=luku;

System.out.println("Anna 7 lukua valilta 1-39.");

boolean [] samojentarkistustaulu=new boolean [40];
nollaa(samojentarkistustaulu);

while (samojentarkistustaulu[luku])
{
System.out.println("Et voi antaa kahta samaa lottonumeroa.");
luku = pyydaLuku (1, 39, "Anna" i " . lottonumerosi:");
}
}
System.out.println("Rivisi oli ");
for (int i=0; i < lottonumerot.length; i )
{
System.out.println(lottonumerot[i] " ");
}
System.out.println();

oikeaRivi = arvonta();
System.out.println("Oikea arvottu rivi oli: " oikeaRivi);
}

public static int arvonta() //1.metodi, joka syottaa oman rivin
{
int[] oikeaRivi =1 (int)(Math.random() * 7);
return int oikeaRivi;

}
public static int arvonta() //2. metodi, joka arpoo oikean rivin
public static int arvonta()//3. metodi, joka tarkastaa ettei ole samoja numeroita
public static int arvonta()//4. metodi, joka tarkastaa oikeiden numeroiden maaran ja tulostaa sen
public static int arvonta()//5.metodi, joka tulostaa rivit
}
111226
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

Haloo

Äänestä

Teepä itse koulutehtäväsi.

Äänestä

Ei ole mitään käsitystä javasta, mutta ainakin arpomisen tekisin listan avulla, jos javassa voi sellaisen tehdä.

Eli ensin tekisin 39 alkiota sisältävän listan, jossa olisi luvut 1-39.

Sitten arpoisin luvun väliltä 1-39, ja ottaisin lukeman kohdalta listan sisällön tuloksiin ja poistaisin kyseisen alkion listasta. Sen jälkeen arpoisin luvun väliltä 1-38 ja taas sama homma. Ja tätä jatkettaisiin kunnes on kaikki 7 arvontaa tehty.

Äänestä

Onpa täällä huono palvelu. Made-palstalla tulee valmis vastaus tuota pikaa.

Äänestä
  • Karhunpalvelus opiskelijalle. Kenelle opiskelija aikoo kilauttaa tentissä?

    Äänestä

Minkä takia et käyttäisi numeroiden tilastointiin 40-alkioista boolean-taulukkoa, ja antaisit aina numerollesi true-arvon, kun numero arvotaan, jne. Ja sitten tarkistus, että uutta numeroa arvotaan niin kauan, että sitä ei ole vielä arvottu. Tämä estää duplikaattien arpomisen. Lisäksi oikein osuneiden tarkistus on helppo toteuttaa tässä mallisani.

Lisäksi tuosta aloittajan koodista sinun käy ilmi, että olet ohjelmoinnin ykköskurssilla ilmeisesti, kun käytät tuota opettajien laatimaa "Lue" -luokkaa hyödyksi. Opettele ottamaan syötteitä jatkossa vastaan komentoriviltä, tai käyttäjän syötteenä.

Äänestä
  • Tuohan on ihan perse idea. Eihän lotossa oikeastikaan voi arpoa samaa palloa moneen kertaan.

    Äänestä

  • kehitäparempi kirjoitti:

    Tuohan on ihan perse idea. Eihän lotossa oikeastikaan voi arpoa samaa palloa moneen kertaan.

    Koska kutakin palloa on vain yksi, arvottu pallo on merkittävä jo arvotuksi, jotta se ei tule uudelleen. Ei ole merkitystä, millä keinolla tuplanumerot vältetään. Voisihan palloja kuvata myös taulukolla, jonka kokoa pienennetään poistamalla siitä arvottu numero jne.

    Äänestä

  • Eiarvotakaan kirjoitti:

    Koska kutakin palloa on vain yksi, arvottu pallo on merkittävä jo arvotuksi, jotta se ei tule uudelleen. Ei ole merkitystä, millä keinolla tuplanumerot vältetään. Voisihan palloja kuvata myös taulukolla, jonka kokoa pienennetään poistamalla siitä arvottu numero jne.

    Melkoista luuppia tässä jauhetaan:

    "uutta numeroa arvotaan niin kauan, että sitä ei ole vielä arvottu."

    Parempi tapa on ottaa mallia tosielämästä. Tehdään ensin lottonumeroista lista ja poimitaan sieltä satunnaisessa järjestyksessä yksi kerrallaan haluttu määrä numeroita pois.

    Sutasin äkkiä Pythonilla esimerkin: http://pastebin.com/mYJPGfwk

    Äänestä

  • Iggy.Loop kirjoitti:

    Melkoista luuppia tässä jauhetaan:

    "uutta numeroa arvotaan niin kauan, että sitä ei ole vielä arvottu."

    Parempi tapa on ottaa mallia tosielämästä. Tehdään ensin lottonumeroista lista ja poimitaan sieltä satunnaisessa järjestyksessä yksi kerrallaan haluttu määrä numeroita pois.

    Sutasin äkkiä Pythonilla esimerkin: http://pastebin.com/mYJPGfwk

    Hieno homma.

    Linux Mint 18 Sarah
    Xfce 64-bit

    Äänestä

Korpeaa se, että nykyään kahden ylimmän voittoluokan voitot menevät aina porukoille! Hyvä peliyhtiö, antakaa myös yksittäisten nettipelaajien saada päävoittoja!!

Äänestä

Kommentoi aloitusta


java-ohjelmointi kirjoitti:

onko liikkeellä Java-neroja?

Seuraava tehtävä pitäisi ratkaista:
Tee metodeja hyödyntäen ohjelma, joka tarkastaa lotto-rivisi. Ohjelma kysyy oman lottorivisi (7 numeroa väliltä 1-39) ja sijoittaa sen yksiulotteiseen taulukkoon. Ohjelma arpoo oikean rivin (7 numeroa väliltä 1-39) ja sijoittaa sen toiseen yksiulotteiseen taulukkoon. Lopuksi ohjelma tarkistaa rivin ja tulostaa oikeiden numeroiden määrän. Huom! Rivit eivät saa sisältää samaa numeroa useaan kertaan.
Ohjelma voisi sisältää esimerkiksi seuraavat metodit:
- Metodi, joka syöttää oman rivin.
- Metodi, joka arpoo oikean rivin.
- Metodi, joka tarkastaa, ettei rivi sisällä samoja numeroita.
- Metodi, joka tarkastaa oikeiden numeroiden määrän ja tulostaa sen.
- Metodi, joka tulostaa rivit.

Olen saanut tehtävän alkuun:
class H3
{
public static void main(String[] args)
{ int[] oikeaRivi = new int[7];
int[] lottonumerot = new int[7];
int [] oikeaRivi=0;

for(int i=0;i<lottonumerot.length;i )
{
int luku=Lue.kluku();
lottonumerot[i]=luku;

System.out.println("Anna 7 lukua valilta 1-39.");

boolean [] samojentarkistustaulu=new boolean [40];
nollaa(samojentarkistustaulu);

while (samojentarkistustaulu[luku])
{
System.out.println("Et voi antaa kahta samaa lottonumeroa.");
luku = pyydaLuku (1, 39, "Anna" i " . lottonumerosi:");
}
}
System.out.println("Rivisi oli ");
for (int i=0; i < lottonumerot.length; i )
{
System.out.println(lottonumerot[i] " ");
}
System.out.println();

oikeaRivi = arvonta();
System.out.println("Oikea arvottu rivi oli: " oikeaRivi);
}

public static int arvonta() //1.metodi, joka syottaa oman rivin
{
int[] oikeaRivi =1 (int)(Math.random() * 7);
return int oikeaRivi;

}
public static int arvonta() //2. metodi, joka arpoo oikean rivin
public static int arvonta()//3. metodi, joka tarkastaa ettei ole samoja numeroita
public static int arvonta()//4. metodi, joka tarkastaa oikeiden numeroiden maaran ja tulostaa sen
public static int arvonta()//5.metodi, joka tulostaa rivit
}

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