Ohpen tentin malliratkaisut

HUOM Tehtävät saattoi ratkaista useammalla tavalla, tässä esitetty on yksi niistä.

Kysymykset/ihmettelyt malliratkasuista ja arvosteluista Jarmolta, Jarmo.Isotalo@cs.helsinki.fi tai Jamo:lta @IRCnet

2a

    public static void main(String[] args) {
        int i = 999;
        while (true) {
            System.out.println(i);
            i -= 3;
            if (i == 0) {
                break;
            }
        }
    }

2b


public static void main(String[] args) {
    ArrayList<String> sanat = new ArrayList<>();
    System.out.println("Anna merkkijonoja");
    String lyhyin = "";
    String pisin = "";
    Scanner lukija = new Scanner(System.in);
    while (true) {
        String syote = lukija.nextLine();
        if (syote.isEmpty()) {
            break;
        }
        if (syote.length() < lyhyin.length()) {
            lyhyin = syote;
        }
        if (syote.length() > pisin.length()) {
            pisin = syote;
        }
    }

    System.out.println("");
    System.out.println("Lyhyin: " + lyhyin);
    System.out.println("Pisin: " + pisin);
}

3a

public static void pyramidi(int korkeus) {
      for (int i = 0; i > korkeus ; i++ ){
        for (int j = 0; j < i ; j++ ){
            System.out.print("#");
        }
        System.out.println();
      }

      for (int i = korkeus; i > 0 ; i-- ){
          for (int j = 0; j < i ; j++ ){
               System.out.print("#");
           }
      System.out.println();
      }
}

3b

public static int montakoKertaaEsiintyy(int[] luvut, int luku){
    int kertoja = 0;
    for (int i = 0; i < luvut.length; i++ ){
        if (luvut[i] == luku){
            kertoja++;
        }
    }
    return kertoja;
}

4a

public class Kurssisuoritus {
    private String nimi;
    private int arvosana;
    private int opintopisteita;

    public Kurssisuoritus(String nimi, int arvosana, int opintopisteita) {
        this.nimi = nimi;
        this.arvosana = arvosana;
        this.opintopisteita = opintopisteita;
    }

    public String getKurssi() {
        return nimi;
    }

    public int getArvosana() {
        return arvosana;
    }

    public int getOpintopisteet() {
        return opintopisteita;
    }

    public void setArvosana(int arvosana) {
        this.arvosana = arvosana;
    }

    @Override
    public String toString() {
        return nimi + " " + opintopisteita + " op, arvosana: " + arvosana;
    }
}
import java.util.ArrayList;

public class Opiskelija {
    private String nimi;
    private ArrayList<Kurssisuoritus> suoritukset = new ArrayList<Kurssisuoritus>();

    public Opiskelija(String nimi) {
        this.nimi = nimi;
    }

    public void suorita(String kurssinNimi, int arvosana, int opintopisteita) {
        for (Kurssisuoritus suoritus : suoritukset) {
            if(suoritus.getKurssi().equals(kurssinNimi)) {
                if(suoritus.getArvosana() < arvosana) {
                    suoritus.setArvosana(arvosana);
                }
                // poistutaan metodista, jotta suoritusta ei lisätä uudelleen
                return;
            }
        }
        suoritukset.add(new Kurssisuoritus(kurssinNimi, arvosana, opintopisteita));
    }

    // b-kohdan mukainen metodi:
    //
    // public void suorita(String kurssinNimi, int arvosana, int opintopisteita) {
    //     suoritukset.add(new Kurssisuoritus(kurssinNimi, arvosana, opintopisteita));
    // }

    public int opintopisteita() {
        int summa = 0;
        for (Kurssisuoritus suoritus : suoritukset) {
            summa += suoritus.getOpintopisteet();
        }
        return summa;
    }

    public void suoritusote() {
        System.out.println(nimi);
        for (Kurssisuoritus suoritus : suoritukset) {
            System.out.println("  " + suoritus);
        }
        System.out.println("opintopisteitä: " + opintopisteita());
    }
}