Tehtävät tehdään harjoitussaleissa.
Pakolliset tehtävät on merkitty harmalla taustavärillä. Pakollisuus tarkoittaa oikeastaan hyvin voimakasta suositusta tehtävän tekemiseen. Jos pakollisia jää tekemättä, on suuri riski, että seuraavalla viikolla esitellään asioita jotka oletetetaan jo osatuiksi ja pakollisten tehtävien kautta harjoitelluiksi.
Muuttujat ja (tällä viikolla opittavat) metodit kannattaa nimetä kuvaavasti. Usein käy, että muuttujan/metodin nimi on hieman epäkuvaava ja tulee tarve nimen muuttamiselle. NetBeans:issa tämä on todella helppoa. Maalaa huono nimi jostain kohtaa koodiasi hiirellä. Paina (yhtäaikaa) ctrl ja r ja kirjoita muuttujalle/metodille uusi nimi.
Voit halutessasi tehdä tehtävät 1.1.-1.5 samaan ohjelmaan.
Tee ohjelma, joka kysyy käyttäjän nimen ja ilmoittaa, kuinka monta kirjainta siinä on.
Anna nimi: Pekka Kirjainmäärä: 5
Anna nimi: Katariina Kirjainmäärä: 9
Tee ohjelma, joka kysyy käyttäjän nimen ja ilmoittaa nimen ensimmäisen kirjaimen.
Anna nimi: Pekka Ensimmäinen kirjain: P
Anna nimi: Katariina Ensimmäinen kirjain: K
Tee ohjelma, joka kysyy käyttäjän nimen ja ilmoittaa nimen viimeisen kirjaimen.
Anna nimi: Pekka Viimeinen kirjain: a
Anna nimi: Katariina Viimeinen kirjain: a
Tee ohjelma, joka kysyy käyttäjän nimen ja ilmoittaa sen kirjaimet erikseen.
Anna nimi: Pekka 1. kirjain: P 2. kirjain: e 3. kirjain: k 4. kirjain: k 5. kirjain: a
Anna nimi: Katariina 1. kirjain: K 2. kirjain: a 3. kirjain: t 4. kirjain: a 5. kirjain: r 6. kirjain: i 7. kirjain: i 8. kirjain: n 9. kirjain: a
Tee ohjelma, joka kysyy käyttäjän nimen ja tulostaa sen väärinpäin.
Anna nimi: Pekka Väärinpäin: akkeP
Anna nimi: Katariina Väärinpäin: aniirataK
Tee ohjelma, joka tulostaa sanan alkuosan.
Ohjelma kysyy käyttäjältä sanan ja alkuosan pituuden.
Käytä ohjelmassa metodia substring
.
Anna sana: esimerkki Alkuosan pituus: 4 Tulos: esim
Anna sana: esimerkki Alkuosan pituus: 7 Tulos: esimerk
Tee ohjelma, joka tulostaa sanan loppuosan.
Ohjelma kysyy käyttäjältä sanan ja loppuosan pituuden.
Käytä ohjelmassa metodia substring
.
Anna sana: esimerkki Loppuosan pituus: 4 Tulos: rkki
Anna sana: esimerkki Loppuosan pituus: 7 Tulos: imerkki
Tee ohjelma, joka kysyy käyttäjältä kaksi sanaa.
Sitten ohjelma kertoo, onko toinen sana
ensimmäisen sanan osana. Käytä ohjelmassa
metodia indexOf
.
Anna 1. sana: suppilovahvero Anna 2. sana: ilo Sana 'ilo' on sanan 'suppilovahvero' osana.
Anna 1. sana: suppilovahvero Anna 2. sana: suru Sana 'suru' ei ole sanan 'suppilovahvero' osana.
Tee metodi tulostaTeksti
, joka tulostaa
tekstin "Alussa olivat suo, kuokka ja Java." sekä rivinvaihdon.
private static void tulostaTeksti() { // kirjoita koodia tähän } public static void main(String[] args) { tulostaTeksti(); }
Ohjelman tulostus:
Alussa olivat suo, kuokka ja Java.
Laajenna edellistä ohjelmaasi siten, että pääohjelma kysyy käyttäjältä, montako kertaa teksti tulostetaan eli montako kertaa metodia kutsutaan.
private static void tulostaTeksti() { // kirjoita koodia tähän } public static void main(String[] args) { // kysy käyttäjältä, montako kertaa teksti tulostetaan // kutsu metodia tulostaTeksti silmukassa }
Ohjelman tulostus:
Kuinka monta? 7 Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java. Alussa olivat suo, kuokka ja Java.
Tämän kohdan tehtävät kannattaa tehdä samaan tiedostoon.
Tee metodi tulostaTahtia
,
joka tulostaa annetun määrän tähtiä ja rivinvaihdon.
Tee metodi seuraavaan runkoon:
private static void tulostaTahtia(int maara) { // kirjoita koodia tähän } public static void main(String[] args) { tulostaTahtia(5); tulostaTahtia(3); tulostaTahtia(9); }
Ohjelman tulostus:
***** *** *********
Tee metodi tulostaViesti
, joka tulostaa
annetun viestin tähdillä reunustettuna.
Käytä metodissa apuna metodia tulostaTahtia
.
Tee ohjelma seuraavaan runkoon:
private static void tulostaViesti(String viesti) { // kirjoita koodia tähän } public static void main(String[] args) { tulostaViesti("Tervetuloa!"); tulostaViesti("ABC"); tulostaViesti("Hei hei!"); }
Ohjelman tulostus:
*************** * Tervetuloa! * *************** ******* * ABC * ******* ************ * Hei hei! * ************
Tee metodi tulostaViestit
,
joka tulostaa taulukossa annetut viestit tähdillä reunustettuina.
Käytä metodissa apuna metodia tulostaViesti
.
private static void tulostaViestit(String [] viestit) { // kirjoita koodia tähän } public static void main(String[] args) { String [] taulukko = {"Tervetuloa", "ABC", "Hei hei!"}; tulostaViestit(taulukko); }
Ohjelman tulostus:
*************** * Tervetuloa! * *************** ******* * ABC * ******* ************ * Hei hei! * ************
Tee metodi tulostaMerkkeja
,
joka tulostaa annetun määrän annettuja merkkejä.
Tee ohjelma seuraavaan runkoon:
private static void tulostaMerkkeja(int maara, char merkki) { // kirjoita koodia tähän } public static void main(String[] args) { tulostaMerkkeja(5, 'A'); tulostaMerkkeja(3, 'B'); tulostaMerkkeja(9, 'C'); }
Ohjelman tulostus:
AAAAA BBB CCCCCCCCC
Tee metodi summa
, joka laskee
taulukon lukujen summan.
Tee metodi seuraavaan runkoon:
private static int summa(int [] luvut) { // kirjoita koodia tähän } public static void main(String[] args) { int [] taulukko = {3, 2, 7, 2}; System.out.println("Summa: " + summa(taulukko)); }
Ohjelman tulostus:
Summa: 14
Tee metodi keskiarvo
, joka laskee taulukon
lukujen keskiarvon. Metodissa kannattaa käyttää
apuna metodia summa
.
Tee metodi seuraavaan runkoon:
private static double keskiarvo(int [] luvut) { // kirjoita koodia tähän } public static void main(String[] args) { int [] taulukko = {3, 2, 7, 2}; System.out.println("Keskiarvo: " + keskiarvo(taulukko)); }
Ohjelman tulostus:
Keskiarvo: 3.5
Tee metodi pienin
,
joka palauttaa taulukon pienimmän luvun.
private static int pienin(int [] luvut) { // kirjoita koodia tähän } public static void main(String[] args) { int [] taulukko = {3, 2, 7, 2}; System.out.println("Pienin: " + pienin(taulukko)); }
Ohjelman tulostus:
Pienin: 2
Tee metodi suurin
,
joka palauttaa taulukon suurimman luvun.
private static int suurin(int [] luvut) { // kirjoita koodia tähän } public static void main(String[] args) { int [] taulukko = {3, 2, 7, 2}; System.out.println("Suurin: " + suurin(taulukko)); }
Ohjelman tulostus:
Suurin: 7
Tee metodi varianssi
, joka palauttaa taulukon lukujen otosvarianssin.
Ohjeen varianssin laskemiseksi voit katsoa esimerkiksi
Wikipediasta
kohdasta populaatio- ja otosvarianssi.
private static double varianssi(int [] luvut) { // kirjoita koodia tähän } public static void main(String[] args) { int [] taulukko = {3, 2, 7, 2}; System.out.println("Varianssi: " + varianssi(taulukko)); }
Ohjelman tulostus:
Varianssi: 5.666667
(Lukujen keskiarvo on 3.5, joten otosvarianssi on ((3 - 3.5)² + (2 - 3.5)² + (7 - 3.5)² + (2 - 3.5)²)/(4 - 1) ≈ 5,666667.)
Tee metodi onkoLukuTaulukossa
, joka saa parametrinaan
int-taulukon ja int-luvun.
Jos luku on taulukossa,
metodi palauttaa true
ja muulloin false
.
Ohjelman rakenne on seuraava:
private static boolean onkoLukuTaulukossa(int[] taulukko, int luku) { // kirjoita koodia tähän } public static void main(String[] args) { int[] luvut = {1, 3, 5, 7}; System.out.println("Anna luku: "); int luku = Integer.parseInt(lukija.nextLine()); if (onkoLukuTaulukossa(luvut, luku)) { System.out.println(luku + " on taulukossa."); } else { System.out.println(luku + " ei ole taulukossa."); } }
Anna luku: 3 Luku on taulukossa.
Anna luku: 4 Luku ei ole taulukossa.
Tee metodi kysyLuvut
,
joka kysyy käyttäjältä lukuja ja
palauttaa ne taulukkona.
Liitä pääohjelmaan myös ohjelmaan mukaan tehtävien 5.1 ja 5.2
metodit summa
ja keskiarvo
.
Sinun täytyy luoda palautettava taulukko metodin sisällä. Taulukon luominen onnistuu vastaavalla tavalla kuin taulukon luominen hoidettiin viikolla 2 main-metodissa.
private static int [] kysyLuvut() { // kirjoita koodia tähän } public static void main(String[] args) { int [] luvut = kysyLuvut(); System.out.println("Summa: " + summa(luvut)); System.out.println("Keskiarvo: " + keskiarvo(luvut)); }
Kuinka monta lukua? 3 Anna luvut: 5 2 11 Summa: 18 Keskiarvo: 6.0
Tee yksinkertainen arvauspeli. Pelin toiminta alkaa sillä, että käyttäjältä kysytään arvattavat luvut:
Kuinka monta lukua? 3 Anna luvut: 5 2 11 Kiitos. Siirrytään arvausvaiheeseen.
Kun luvut on syötetty, tulostetaan 40 rivinvaihtoa kutsumalla komentoa System.out.println("") 40 kertaa.
Tämän jälkeen käyttäjälle (joka on kenties eri ihminen kun lukujen syöttäjä) annetaan 3 arvausta. Arvausten jälkeen ilmoitetaan, kuinka monta arvauksista oli oikein.
Arvaa mitä lukuja taulukossa on. Saat kolme arvausta. 4 99 2 Kiitos arvauksista. 1 oikein.
Tee peli käyttäen kahden edellisen tehtävän metodeja. Pääohjelma muotoutuu seuraavaan tapaan:
public static void main(String[] args) { int [] luvut = kysyLuvut(); // tulosta tyhjää int oikeatArvaukset = 0; // kolme arvausta for ( int i=0; i<3; i++ ) { // lue arvaus // tarkasta metodin onkoLukuTaulukossa avulla menikö arvaus oikein ja päivitä statistiikka } // tulosta oikeiden vastausten määrä }
Laajennetaan edellistä tehtävää niin, että pelaajalla on rajaton määrä arvauksia. Kun käyttäjä antaa syötteenä -99, loppuu peli ja käyttäjälle ilmoitetaan arvausten lukumäärä ja oikeiden arvausten lukumäärä. Peli etenee seuraavasti:
Arvaa mitä lukuja taulukossa on. Kun kyllästyt, syötä -99. 4 7 2 100 11 -99 Arvauksia oli 5, joista oikein 2.
Laajennetaan edellistä tehtävää siten, että ohjelma kysyy pelin jälkeen, haluaako käyttäjä pelata uudestaan. Lopuksi ohjelma ilmoittaa, kuinka monta peliä pelattiin yhteensä.
Arvaa mitä lukuja taulukossa on. Kun kyllästyt, syötä -99. 4 7 2 100 11 -99 Arvauksia oli 5, joista oikein 2. Uusi peli (k/e)? k Arvaa mitä lukuja taulukossa on. Kun kyllästyt, syötä -99. -1 5 2 -99 Arvauksia oli 3, joista oikein 0. Uusi peli (k/e)? e Pelaajia tänään 2.
Tee metodi kaanna
, joka kääntää annetun merkkijonon.
Tee metodi seuraavaan runkoon:
private static String kaanna(String merkkijono) { // kirjoita koodia tähän } public static void main(String[] args) { System.out.print("Anna merkkijono: "); String merkkijono = lukija.nextLine(); System.out.println("Väärinpäin: " + kaanna(merkkijono)); }
Vihje: joudut todennäköisesti kokoamaan metodin sisällä käänteisen merkkijonon merkki kerrallaan. Kokoamisessa kannattaa käyttää apuna String-tyyppistä apumuuttujaa. Aluksi apumuuttujan arvo on tyhjä merkkijono. Tämän jälkeen merkkijonon perään laitetaan uusia merkkejä merkki kerrallaan.
String apu = ""; // ... // aletaan lisäilemään merkkejä apu:n perään apu = apu + merkki;
Ohjelman tulostus:
Anna merkkijono: esimerkki ikkremise
Tee metodi palindromi
,
joka kertoo, onko merkkijono palindromi
(merkkijonon sisältö on sama alusta loppuun ja
lopusta alkuun luettuna).
Metodin kannattaa käyttää metodia kaanna
.
Metodin tyyppi on boolean
,
joten se palauttaa joko arvon true
(merkkijono on palindromi) tai false
(merkkijono ei ole palindromi).
private static boolean palindromi(String merkkijono) { // kirjoita koodia tähän } public static void main(String[] args) { System.out.println("Anna merkkijono: "); String merkkijono = lukija.nextLine(); if (palindromi(merkkijono)) { System.out.println("Merkkijono on palindromi!"); } else { System.out.println("Merkkijono ei ole palindromi!"); } }
Ohjelman tulostuksia:
Anna merkkijono: saippuakauppias Merkkijono on palindromi!
Anna merkkijono: esimerkki Merkkijono ei ole palindromi!