Skip to content
Snippets Groups Projects
Commit 79e54197 authored by Oiva Mickelsson's avatar Oiva Mickelsson
Browse files

Toteutettiin tehvänannot

parent 46642b47
No related branches found
No related tags found
No related merge requests found
Pipeline #62212 passed
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: " + getKirjanNimi() + "\nKirjailija: " + getKirjailijanNimi() + "\nJulkaisuvuosi: " + getJulkaisuVuosi() + "\n";
}
}
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, ArrayList<Kirja> kirjaListaus) {
this.kokoelmanOmistaja = kokoelmanOmistaja;
this.kirjaListaus = kirjaListaus;
}
public void tulostaKokoelma(PrintStream out) {
if (getKirjaListaus().size() == 0) {
out.println("Kokoelma on tyhjä.");
} else {
StringBuilder kirjat = new StringBuilder();
for (Kirja kirja : getKirjaListaus()) {
kirjat.append(kirja.toString());
}
out.println(kirjat);
}
}
public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
if (kentta == null || hakusana == null || hakusana.length() == 0) {
throw new IllegalArgumentException("Tarkista, että olet kirjoittanut hakusanan ja valinnut kentän kirjanTiedot-luokasta!");
}
List<Kirja> kirjat = new ArrayList<>();
for (Kirja kirja : getKirjaListaus()) {
switch (kentta) {
case NIMI:
if (kirja.getKirjanNimi().contains(hakusana)) {
kirjat.add(kirja);
}
case KIRJAILIJA:
if (kirja.getKirjailijanNimi().contains(hakusana)) {
kirjat.add(kirja);
}
case JULKAISUVUOSI:
if (String.valueOf(kirja.getJulkaisuVuosi()).contains(hakusana)) {
kirjat.add(kirja);
}
}
}
return kirjat;
}
public void lisaaKirja(Kirja kirja) {
kirjaListaus.add(kirja);
}
public String getKokoelmanOmistaja() {
return kokoelmanOmistaja;
}
public void setKokoelmanOmistaja(String kokoelmanOmistaja) {
this.kokoelmanOmistaja = kokoelmanOmistaja;
}
public ArrayList<Kirja> getKirjaListaus() {
return kirjaListaus;
}
}
package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.*;
public class Main {
......@@ -12,9 +9,20 @@ public class Main {
* 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ä.
*/
/*public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
}*/
public static ArrayList<String> kysyTietoja(String[] kysyttavat, String lopetusmerkki) {
ArrayList<String> vastaukset = new ArrayList<>();
Scanner lukija = new Scanner(System.in);
for (String kysyttava : kysyttavat) {
System.out.print(kysyttava + ": ");
String vastaus = lukija.nextLine();
if (vastaus.equals(lopetusmerkki)) {
return null;
} else {
vastaukset.add(vastaus);
}
}
return vastaukset;
}
/*
......@@ -22,9 +30,29 @@ public class Main {
* kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/
/*public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
}*/
public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
try {
KirjaKokoelma kokoelma = new KirjaKokoelma(kysyTietoja(new String[]{"Kokoelman omistaja"}, lopetusmerkki).toString(), new ArrayList<>());
while (true) {
ArrayList<String> vastaukset = kysyTietoja(new String[]{"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"}, lopetusmerkki);
do {
if (vastaukset == null) {
return kokoelma;
}
try {
kokoelma.lisaaKirja(new Kirja(vastaukset.get(0), vastaukset.get(1), Integer.valueOf(vastaukset.get(2))));
break;
} catch (NumberFormatException e) {
System.out.println("Varmista, että kirjoitit vuoden kokonaislukuina!");
vastaukset.set(2, kysyTietoja(new String[]{"Julkaisuvuosi"}, lopetusmerkki).get(0));
}
} while (true);
}
} catch (NullPointerException e) {
return new KirjaKokoelma(null, new ArrayList<>());
}
}
/**
* Main class.
......@@ -35,16 +63,20 @@ public class Main {
/*
* 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
KirjaKokoelma kokoelma = luoKokoelma("lopeta");
//Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
System.out.println("Kirjakokoelmasi:");
kokoelma.tulostaKokoelma(System.out);
//Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
List<Kirja> haku = kokoelma.etsiKirjat("1915", KirjanTiedot.JULKAISUVUOSI);
//Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
System.out.println("Hakutulos:");
for (Kirja kirja : haku) {
System.out.println(kirja);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment