Skip to content
Snippets Groups Projects
Commit 42b2fd69 authored by Henri Sippola's avatar Henri Sippola
Browse files

Add exercise implementations

parent 46642b47
Branches main
No related tags found
No related merge requests found
package fi.utu.tech.ooj.exercise0;
public class Kirja
{
private String kirjanNimi;
private String kirjailijanNimi;
private int julkaisuVuosi;
public Kirja(String kirjanNimi, String kirjailijanNimi, int julkaisuVuosi)
{
this.kirjanNimi = kirjanNimi;
this.kirjailijanNimi = kirjailijanNimi;
this.julkaisuVuosi = julkaisuVuosi;
}
public String getKirjanNimi() {
return kirjanNimi;
}
public void setKirjanNimi(String kirjanNimi) {
this.kirjanNimi = kirjanNimi;
}
public String getKirjailijanNimi() {
return kirjailijanNimi;
}
public void setKirjailijanNimi(String kirjailijanNimi) {
this.kirjailijanNimi = kirjailijanNimi;
}
public int getJulkaisuVuosi() {
return julkaisuVuosi;
}
public void setJulkaisuVuosi(int julkaisuVuosi) {
this.julkaisuVuosi = julkaisuVuosi;
}
@Override
public String toString() {
return "Kirja: " + kirjanNimi + "\n" +
"Kirjailija: " + kirjailijanNimi + "\n" +
"Julkaisuvuosi: " + julkaisuVuosi;
}
}
package fi.utu.tech.ooj.exercise0;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
public class KirjaKokoelma
{
private String kokoelmanOmistaja;
private ArrayList<Kirja> kirjaListaus;
public KirjaKokoelma(String kokoelmanOmistaja)
{
this.kokoelmanOmistaja = kokoelmanOmistaja;
kirjaListaus = new ArrayList<>();
}
public String getKokoelmanOmistaja() {
return kokoelmanOmistaja;
}
public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
this.kokoelmanOmistaja = kokoelmanOmistaja;
}
public ArrayList<Kirja> getKirjaListaus() {
return kirjaListaus;
}
public void lisaaKirja(Kirja kirja)
{
kirjaListaus.add(kirja);
}
public void tulostaKokoelma(PrintStream out)
{
if (kirjaListaus.isEmpty())
{
out.println("Kokoelma tyhjä.");
return;
}
for (Kirja kirja : kirjaListaus)
{
out.println(kirja.toString());
}
}
public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException
{
if (hakusana == null || hakusana.isBlank() || kentta == null)
{
throw new IllegalArgumentException();
}
List<Kirja> tulokset = new ArrayList<>();
for (Kirja kirja : kirjaListaus)
{
if (kentta == KirjanTiedot.NIMI) {
if (kirja.getKirjanNimi().contains(hakusana))
{
tulokset.add(kirja);
}
}
if (kentta == KirjanTiedot.KIRJAILIJA) {
if (kirja.getKirjailijanNimi().contains(hakusana))
{
tulokset.add(kirja);
}
}
if (kentta == KirjanTiedot.JULKAISUVUOSI) {
if (("" + kirja.getJulkaisuVuosi()).contains(hakusana))
{
tulokset.add(kirja);
}
}
}
return tulokset;
}
}
package fi.utu.tech.ooj.exercise0; package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main { public class Main {
...@@ -12,9 +9,23 @@ public class Main { ...@@ -12,9 +9,23 @@ public class Main {
* Kirjoita tähän tehtävän 4 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla * Kirjoita tähän tehtävän 4 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
* kommenttimerkit alla olevan rutiinin rungon ympäriltä. * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/ */
/*public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) { public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki)
{
}*/ Scanner lukija = new Scanner(System.in);
ArrayList<String> vastaukset = new ArrayList<>();
for (String kysyttava : kysyttavat)
{
System.out.println(kysyttava);
String vastaus = lukija.nextLine();
if (vastaus.equals(lopetusmerkki))
{
return vastaukset;
}
vastaukset.add(vastaus);
System.out.println();
}
return vastaukset;
}
/* /*
...@@ -22,9 +33,30 @@ public class Main { ...@@ -22,9 +33,30 @@ public class Main {
* kommenttimerkit alla olevan rutiinin rungon ympäriltä. * kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/ */
/*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) { public static KirjaKokoelma luoKokoelma(String lopetusmerkki)
{
Scanner lukija = new Scanner(System.in);
System.out.print("Kokoelman omistaja: ");
String vastaus = lukija.nextLine();
KirjaKokoelma kokoelma = new KirjaKokoelma(vastaus);
while (true)
{
String[] kysymykset = {"Kirjan nimi: ", "Kirjailijan nimi: ", "Julkaisu vuosi: "};
ArrayList<String> tiedot = kysyTietoja(kysymykset, lopetusmerkki);
if(tiedot.size() != 3)
{
break;
}
String kirjanNimi = tiedot.get(0);
String kirjailijanNimi = tiedot.get(1);
int julkaisuVuosi = Integer.valueOf(tiedot.get(2));
}*/ kokoelma.lisaaKirja(new Kirja(kirjanNimi, kirjailijanNimi, julkaisuVuosi));
System.out.println("Kirja lisätty.");
}
return kokoelma;
}
/** /**
* Main class. * Main class.
...@@ -35,16 +67,32 @@ public class Main { ...@@ -35,16 +67,32 @@ public class Main {
/* /*
* Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa. * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa.
*/ */
System.out.println("*** Harjoitustyöpohja käynnistyy ***"); //System.out.println("*** Harjoitustyöpohja käynnistyy ***");
//Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
KirjaKokoelma kokoelma = luoKokoelma("lopeta");
//Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia //Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
kokoelma.tulostaKokoelma(System.out);
//Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia //Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
//Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa. //Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
Scanner lukija = new Scanner(System.in);
KirjanTiedot kentta;
//Valitaan mihin tietokenttään haku kohdistetaan, oletuksena nimi.
System.out.print("Etsi nimen(1), kirjailijan(2) tai julkaisuvuoden(3) perusteella: ");
String vastaus = lukija.nextLine();
kentta = switch (vastaus) {
case "1" -> KirjanTiedot.NIMI;
case "2" -> KirjanTiedot.KIRJAILIJA;
case "3" -> KirjanTiedot.JULKAISUVUOSI;
default -> KirjanTiedot.NIMI;
};
System.out.print("Hakusana: ");
String hakusana = lukija.nextLine();
System.out.println(kokoelma.etsiKirjat(hakusana, kentta));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment