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
}
Ilmianna
Jaa

11 Vastausta



Haloo
Ilmianna
Jaa
Teepä itse koulutehtäväsi.
Ilmianna
Jaa
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.
Ilmianna
Jaa
Onpa täällä huono palvelu. Made-palstalla tulee valmis vastaus tuota pikaa.
Kommentoi
Ilmianna
Jaa
1 VASTAUS:
Karhunpalvelus opiskelijalle. Kenelle opiskelija aikoo kilauttaa tentissä?
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
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ä.
Kommentoi
Ilmianna
Jaa
4 VASTAUSTA:
Tuohan on ihan perse idea. Eihän lotossa oikeastikaan voi arpoa samaa palloa moneen kertaan.
Kommentoi
Ilmianna
Jaa
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.
Kommentoi
Ilmianna
Jaa
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
Kommentoi
Ilmianna
Jaa
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
Kommentoi
Ilmianna
Jaa
+Lisää kommentti
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!!
Ilmianna
Jaa

Vastaa alkuperäiseen viestiin

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
}

5000 merkkiä jäljellä

Peruuta