Skip to content
Snippets Groups Projects
Commit b57d100d authored by Eric Tilli's avatar Eric Tilli
Browse files

tein teht

parent 46642b47
No related branches found
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 void setKirjanNimi(String kirjanNimi) {
this.kirjanNimi = kirjanNimi;
}
public String getKirjanNimi() {
return this.kirjanNimi;
}
public void setKirjailijanNimi(String kirjailijanNimi) {
this.kirjailijanNimi = kirjailijanNimi;
}
public String getKirjailijanNimi() {
return this.kirjailijanNimi;
}
public void setJulkaisuVuosi(int julkaisuVuosi) {
this.julkaisuVuosi = julkaisuVuosi;
}
public int getJulkaisuVuosi() {
return this.julkaisuVuosi;
}
@Override
public String toString() {
return "Kirja: " + this.kirjanNimi + "\nKirjailija: " + this.kirjailijanNimi + "\nJulkaisuvuosi: " + this.julkaisuVuosi;
}
}
package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList;
import java.util.List;
import java.io.PrintStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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 setKokoelmanOmistaja(String kokoelmanOmistaja) {
this.kokoelmanOmistaja = kokoelmanOmistaja;
}
public String getKokoelmanOmistaja() {
return this.kokoelmanOmistaja;
}
public void lisaaKirja(Kirja kirja) {
this.kirjaListaus.add(kirja);
}
public ArrayList<Kirja> getKirjaListaus() {
return this.kirjaListaus;
}
public void tulostaKokoelma(PrintStream out) {
if(this.kirjaListaus.isEmpty()) {
out.println("Kirjalistaus on tyhjä!\n");
} else {
for(Kirja kirja : this.kirjaListaus) {
out.println(kirja + "\n");
}
}
}
public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
if((hakusana == null) || (hakusana == "")) {
throw new IllegalArgumentException();
}
Pattern pattern = Pattern.compile(hakusana);
String tieto;
Matcher matcher;
List<Kirja> kirjat = new ArrayList<>();
for(Kirja kirja : this.kirjaListaus) {
switch(kentta) {
case NIMI:
tieto = kirja.getKirjanNimi();
matcher = pattern.matcher(tieto);
break;
case KIRJAILIJA:
tieto = kirja.getKirjailijanNimi();
matcher = pattern.matcher(tieto);
break;
default:
tieto = String.valueOf(kirja.getJulkaisuVuosi());
matcher = pattern.matcher(String.valueOf(tieto));
break;
}
if(tieto == null) {
throw new IllegalArgumentException();
}
if(matcher.find()) {
kirjat.add(kirja);
}
}
return kirjat;
}
}
package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList;
import java.util.List;
import java.io.PrintStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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 setKokoelmanOmistaja(String kokoelmanOmistaja) {
this.kokoelmanOmistaja = kokoelmanOmistaja;
}
public String getKokoelmanOmistaja() {
return this.kokoelmanOmistaja;
}
public void lisaaKirja(Kirja kirja) {
this.kirjaListaus.add(kirja);
}
public ArrayList<Kirja> getKirjaListaus() {
return this.kirjaListaus;
}
public void tulostaKokoelma(PrintStream out) {
if(this.kirjaListaus.isEmpty()) {
out.println("Kirjalistaus on tyhjä!");
} else {
for(Kirja kirja : this.kirjaListaus) {
out.print(kirja);
}
}
}
public List<Kirja> etsiKirjat(String hakusana, KirjanTiedot kentta) throws IllegalArgumentException {
if((hakusana == null) || (hakusana == "")) {
throw new IllegalArgumentException();
}
Pattern pattern = Pattern.compile(hakusana);
String tieto;
Matcher matcher;
List<Kirja> kirjat = new ArrayList<>();
for(Kirja kirja : this.kirjaListaus) {
switch (kentta) {
case NIMI:
tieto = kirja.getKirjanNimi();
matcher = pattern.matcher(tieto);
case KIRJAILIJA:
tieto = kirja.getKirjailijanNimi();
matcher = pattern.matcher(tieto);
case JULKAISUVUOSI:
tieto = String.valueOf(kirja.getJulkaisuVuosi());
matcher = pattern.matcher(String.valueOf(tieto));
}
if(tieto == null) {
throw new IllegalArgumentException();
}
if(matcher.find()) {
kirjat.add(kirja);
}
}
return kirjat;
}
}
package fi.utu.tech.ooj.exercise0; package fi.utu.tech.ooj.exercise0;
/* /*
* Literaaliluokka, joka listaa kirjaa liittyvät tietokentät Literaaliluokka, joka listaa kirjaa liittyvät tietokentät
*/ */
public enum KirjanTiedot { public enum KirjanTiedot {
NIMI, NIMI,
......
package fi.utu.tech.ooj.exercise0;
/*
* Literaaliluokka, joka listaa kirjaa liittyvät tietokentät
*/
public enum KirjanTiedot {
NIMI,
KIRJAILIJA,
JULKAISUVUOSI
}
package fi.utu.tech.ooj.exercise0; package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Scanner; import java.util.Scanner;
...@@ -9,42 +8,114 @@ public class Main { ...@@ -9,42 +8,114 @@ 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) {
ArrayList<String> vastaukset = new ArrayList<>();
}*/ Scanner s = new Scanner(System.in);
for(String kysymys : kysyttavat) {
System.out.print("Anna " + kysymys + ": ");
String vastaus = s.nextLine();
if(vastaus.equals(lopetusmerkki)) {
return vastaukset;
}
vastaukset.add(vastaus);
}
return vastaukset;
}
/* /*
* Kirjoita tähän tehtävän 5 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla Kirjoita tähän tehtävän 5 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 KirjaKokoelma luoKokoelma(String lopetusmerkki) { public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
ArrayList<String> kirjanTiedot = new ArrayList<>();
}*/ ArrayList<Kirja> kirjat = new ArrayList<>();
Scanner s = new Scanner(System.in);
int lukum = 0;
int vuosi;
System.out.println("Kyselyn voit lopettaa merkillä: " + lopetusmerkki);
System.out.print("Anna kirja kokoelman omistajan nimi: ");
String omistaja = s.nextLine();
if(omistaja.equals(lopetusmerkki)) {
return new KirjaKokoelma("", new ArrayList<>());
}
System.out.println("\nSeuraavaksi lisätään kokoelmaan kirjoja. Kirjojen lisäys loppuu kun annat merkin: " + lopetusmerkki + "\n");
while(true) {
System.out.println(++lukum + ". kirja");
kirjanTiedot = kysyTietoja(new String[] {"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"}, lopetusmerkki);
if(kirjanTiedot.size() == 3) {
try {
vuosi = Integer.valueOf(kirjanTiedot.get(2));
} catch(IllegalArgumentException e) {
--lukum;
System.out.println("Julkaisuvuosi vuodessa saa olla vain kokonaislukuja.\n");
continue;
}
kirjat.add(new Kirja(kirjanTiedot.get(0), kirjanTiedot.get(1), vuosi));
System.out.println("Kirja lisätty!:");
System.out.println(kirjat.get(kirjat.size() - 1).toString() + "\n");
} else {
break;
}
}
System.out.println("Kokoelma luotu!\nKirjojen lukumäärä: " + (lukum - 1) + "\n");
return new KirjaKokoelma(omistaja, kirjat);
}
/** /**
* Main class. Main class.
*
* @param args Command line arguments @param args Command line arguments
*/ */
public static void main(String[] args) { public static void main(String[] args) {
final String lopetusmerkki = "LOPETA";
/* /*
* 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 ***");
//Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia //Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
//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
//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.
System.out.println("*** Harjoitustyöpohja käynnistyy ***");
Scanner s;
KirjanTiedot KirjanTieto;
KirjaKokoelma kirjaKokoelma = luoKokoelma(lopetusmerkki);
KirjaKokoelma loydettyKirjaKokoelma;
List<Kirja> loydetytKirjat = new ArrayList<>();
kirjaKokoelma.tulostaKokoelma(System.out);
s = new Scanner(System.in);
while(true) {
System.out.println("Voit lopettaa hakumekanismin merkillä: " + lopetusmerkki);
System.out.println("Kentät:\nNIMI\nKIRJAILIJA\nJULKAISUVUOSI");
System.out.print("Anna kenttä: ");
String kentta = s.nextLine();
if(kentta.equals(lopetusmerkki)) {
break;
}
try {
KirjanTieto = KirjanTiedot.valueOf(kentta);
System.out.print("\nAnna regex: ");
String regex = s.nextLine();
if(regex.equals(lopetusmerkki)) {
break;
}
loydetytKirjat = kirjaKokoelma.etsiKirjat(regex, KirjanTieto);
loydettyKirjaKokoelma = new KirjaKokoelma("EI_OMISTAJAA", new ArrayList<>(loydetytKirjat));
if(loydettyKirjaKokoelma.getKirjaListaus().size() != 0) {
System.out.println("Löytyi tasan " + loydettyKirjaKokoelma.getKirjaListaus().size() + " kirjaa.\n");
}
loydettyKirjaKokoelma.tulostaKokoelma(System.out);
} catch(IllegalArgumentException e) {
System.out.println("VÄÄRÄ KENTTÄ!\n");
continue;
}
System.out.print("Aloitetaanpas alusta.\n");
}
s.close();
return;
} }
} }
package fi.utu.tech.ooj.exercise0;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
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) {
ArrayList<String> vastaukset = new ArrayList<>();
Scanner s = new Scanner(System.in);
for(String kysymys : kysyttavat) {
System.out.print("Anna " + kysymys + ": ");
String vastaus = s.nextLine();
if(vastaus.equals(lopetusmerkki)) {
return vastaukset;
}
vastaukset.add(vastaus);
}
return vastaukset;
}
/*
Kirjoita tähän tehtävän 5 ratkaisu. Rutiinin signatuuria ei saa muuttaa. Aloita tehtävä poistamalla
kommenttimerkit alla olevan rutiinin rungon ympäriltä.
*/
public static KirjaKokoelma luoKokoelma(String lopetusmerkki) {
ArrayList<String> kirjanTiedot = new ArrayList<>();
ArrayList<Kirja> kirjat = new ArrayList<>();
Scanner s = new Scanner(System.in);
int lukum = 0;
int vuosi;
System.out.println("Kyselyn voit lopettaa merkillä: " + lopetusmerkki);
System.out.print("Anna kirja kokoelman omistajan nimi: ");
String omistaja = s.nextLine();
if(omistaja.equals(lopetusmerkki)) {
return new KirjaKokoelma("", new ArrayList<>());
}
System.out.println("\nSeuraavaksi lisätään kokoelmaan kirjoja. Kirjojen lisäys loppuu kun annat merkin: " + lopetusmerkki + "\n");
while(true) {
System.out.println(++lukum + ". kirja");
kirjanTiedot = kysyTietoja(new String[] {"kirjan nimi", "kirjailijan nimi", "julkaisuvuosi"}, lopetusmerkki);
if(kirjanTiedot.size() == 3) {
try {
vuosi = Integer.valueOf(kirjanTiedot.get(2));
} catch(IllegalArgumentException e) {
System.out.println("VÄÄRÄ KENTTÄ!\n");
continue;
}
kirjat.add(new Kirja(kirjanTiedot.get(0), kirjanTiedot.get(1), vuosi));
System.out.println("Kirja lisätty!:");
System.out.println(kirjat.get(kirjat.size() - 1).toString() + "\n");
} else {
break;
}
}
System.out.println("Kokoelma luotu!\nKirjojen lukumäärä: " + (lukum - 1) + "\n");
return new KirjaKokoelma(omistaja, kirjat);
}
/**
Main class.
@param args Command line arguments
*/
public static void main(String[] args) {
final String lopetusmerkki = "LOPETA";
/*
Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa.
*/
//Luo ensin uusi KirjaKokoelma olio, Käytä tehtävän 5 rutiinia
//Sen jälkeen tulosta kokoelma näyttöön käyttämällä tehtävän 6 rutiinia
//Lopuksi hae jokin kirja kokoelmasta käyttäen tehtävän 7 rutiinia
//Tulosta hakutulos. Sen voit tehdä suoraan main-metodissa.
System.out.println("*** Harjoitustyöpohja käynnistyy ***");
Scanner s;
KirjanTiedot KirjanTieto;
KirjaKokoelma kirjaKokoelma = luoKokoelma(lopetusmerkki);
KirjaKokoelma loydettyKirjaKokoelma;
List<Kirja> loydetytKirjat = new ArrayList<>();
kirjaKokoelma.tulostaKokoelma(System.out);
s = new Scanner(System.in);
while(true) {
System.out.println("Voit lopettaa hakumekanismin merkillä: " + lopetusmerkki);
System.out.println("Kentät:\nNIMI\nKIRJAILIJA\nJULKAISUVUOSI");
System.out.print("Anna kenttä: ");
String kentta = s.nextLine();
if(kentta.equals(lopetusmerkki)) {
break;
}
try {
KirjanTieto = KirjanTiedot.valueOf(kentta);
System.out.print("Anna regex: ");
String regex = s.nextLine();
if(regex.equals(lopetusmerkki)) {
break;
}
loydetytKirjat = kirjaKokoelma.etsiKirjat(regex, KirjanTieto);
loydettyKirjaKokoelma = new KirjaKokoelma("EI_OMISTAJAA", new ArrayList<>(loydetytKirjat));
if(loydettyKirjaKokoelma.getKirjaListaus().size() != 0) {
System.out.println("Löytyi tasan " + loydettyKirjaKokoelma.getKirjaListaus().size() + " kirjaa.");
}
loydettyKirjaKokoelma.tulostaKokoelma(System.out);
System.out.println();
} catch(IllegalArgumentException e) {
System.out.println("VÄÄRÄ KENTTÄ!\n");
continue;
}
System.out.print("Aloitetaanpas alusta.\n");
}
s.close();
return;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment