import java.util.Scanner;
public class Kommandozeilenmenue {
Scanner scan;
Medienbibliothek mb = new Medienbibliothek();
public Kommandozeilenmenue() {
this.scan = new Scanner(System.in);
bisherigeMedien();
}
public void bisherigeMedien() {
Medien m1 = new Filme("Java Wars", "Claudio Landerer", "25.10.2018", 150, true, false);
Medien m2 = new EBooks("Cloverfield Paradox", "Julius Onah", "25.10.2018", 12345678, 120, 100000);
Medien m3 = new Filme("Haus des Geldes", "Alex Pina", "01.11.2018", 200, false, true);
Medien m4 = new EBooks("Poltergeist", "Tobe Hooper", "01.11.2018", 87654321, 175, 100);
mb.medienHinzufuegen(m1);
mb.medienHinzufuegen(m2);
mb.medienHinzufuegen(m3);
mb.medienHinzufuegen(m4);
}
public void MenueAnzeigen() {
System.out.println("-----------------------------------------");
System.out.println("HAUPTMENÜ");
System.out.println("1) HINZUFÜGEN");
System.out.println("2) FILTERN");
System.out.println("3) LISTE-AUSGEBEN");
System.out.println("4) exit");
}
public void unterMenueHinzufügen() {
System.out.println("-----------------------------------------");
System.out.println("HINZUFÜGENMENÜ");
System.out.println("1) FILM-HINZUFÜGEN");
System.out.println("2) EBOOK-HINZUFÜGEN");
System.out.println("3) Zurück");
}
public void unterMenueFiltern() {
System.out.println("-----------------------------------------");
System.out.println("FILTERMENÜ");
System.out.println("1) FILTERN");
System.out.println("2) Zurück");
}
public void unterMenueListe() {
System.out.println("-----------------------------------------");
System.out.println("LISTENMENÜ");
System.out.println("1) FILME");
System.out.println("2) EBOOKS");
System.out.println("3) DETAILS");
System.out.println("4) KURZ");
System.out.println("5) Zurück");
}
public void start() {
MenueAnzeigen();
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
//Möglichkeit 1 wurde gewählt
if(s.equals("1")) {
unterMenueHinzufügen();
s = scan.nextLine();
if(s.equals("1")) {
filmHinzufügen();
}else if(s.equals("2")) {
bookHinzufügen();
}else if(s.equals("3")) {
start();
}else {
fehler();
}
}
//Möglichkeit 2 wurde gewählt
else if(s.equals("2")) {
unterMenueFiltern();
s = scan.nextLine();
if(s.equals("1")) {
mediumFiltern();
}else if(s.equals("2")) {
start();
}else {
fehler();
}
}
//Möglichkeit 3 wurde gewählt
else if(s.equals("3")) {
unterMenueListe();
s = scan.nextLine();
if(s.equals("1")) {
filmListeAusgeben();
start();
}else if(s.equals("2")) {
bookListeAusgeben();
start();
}else if(s.equals("3")) {
listeAusgeben();
start();
}else if(s.equals("4")) {
mb.kurzBeschreibung();
start();
}else if(s.equals("5")) {
start();
}else {
fehler();
}
}
//Möglichkeit 4 wurde gewählt
else if(s.equals("4")) {
System.out.println("Auf Wiedersehen!");
}
//Fehlermeldung bei ungültiger Eingabe
else {
fehler();
}
scan.close();
}
public void listeAusgeben() {
mb.anzeigen();
}
public void fehler()
{
System.out.println("Sie können nur 1, 2, 3 oder 4 eingeben!");
}
//Wenn Fall 1 eintritt --> weitere Entscheidungsmöglichkeiten
public void filmHinzufügen() {
System.out.println("-----------------------------------------");
System.out.println("Bitte geben Sie den Namen des neuen Films ein:");
String name = scan.nextLine();
System.out.println("Bitte geben Sie einen Kommentar zu dem neuen Film ein:");
String kommentar = scan.nextLine();
System.out.println("Bitte geben Sie das Erscheinungsdatum des neuen Films ein:");
String datum = scan.nextLine();
System.out.println("Bitte geben Sie die Spielzeit des neuen Films ein:");
int spielzeit = scan.nextInt();
System.out.println("Ist der Film UHD?");
boolean uhd = scan.nextBoolean();
System.out.println("Ist der Film HD?");
boolean hd = scan.nextBoolean();
Medien m5 = new Filme(name, kommentar, datum, spielzeit, uhd, hd);
mb.medienHinzufuegen(m5);
start();
}
public void filmListeAusgeben() {
for(Filme filme : mb.alleFilmeAlsListe())
{
filme.anzeigen();
}
start();
}
//Wenn Fall 2 eintritt --> weitere Entscheidungsmöglichkeiten
public void bookHinzufügen() {
System.out.println("-----------------------------------------");
System.out.println("Bitte geben Sie den Namen des neuen eBooks ein:");
String name = scan.nextLine();
System.out.println("Bitte geben Sie einen Kommentar zu dem neuen eBook ein:");
String kommentar = scan.nextLine();
System.out.println("Bitte geben Sie das Erscheinungsdatum des neuen eBooks ein:");
String datum = scan.nextLine();
System.out.println("Bitte geben Sie die ISBN-Nummer des neuen eBooks ein:");
int isbn = scan.nextInt();
System.out.println("Bitte geben Sie die Seitenanzahl des neuen eBooks ein:");
int seiten = scan.nextInt();
System.out.println("Bitte geben Sie die Auflagszahl des neuen eBooks ein:");
int auflage = scan.nextInt();
Medien m6 = new EBooks(name, kommentar, datum, isbn, seiten, auflage);
mb.medienHinzufuegen(m6);
start();
}
public void mediumFiltern() {
System.out.println("-----------------------------------------");
System.out.println("Bitte geben Sie den Namen des gesuchten Films ein:");
String s = scan.nextLine();
for(Medien m : mb) {
if(m.contains(s)) {
System.out.println(m);
}
}
}
public void bookListeAusgeben() {
for(EBooks ebooks : mb.alleEBooksAlsListe())
{
ebooks.anzeigen();
}
start();
}
}
这是我的班级Kommandozeilenmenü。在其中,我从Medien类型创建一个ArrayList。我也创建一个扫描仪来跟踪用户输入。 Medien是EBooks和Filme的超类,因为它们非常相似。我的任务是根据用户输入过滤ArrayList。用户输入可以是Object Medien中的任何字段。这是Medien班。
public class Medien{
private int id;
protected String name;
private String kommentar;
private String erscheinungsdatum;
private static int counter;
public Medien(String name, String kommentar, String erscheinungsdatum) {
super();
counter++;
this.id = counter;
this.name = name;
this.kommentar = kommentar;
this.erscheinungsdatum = erscheinungsdatum;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKommentar() {
return kommentar;
}
public void setKommentar(String kommentar) {
this.kommentar = kommentar;
}
public String getErscheinungsdatum() {
return erscheinungsdatum;
}
public void setErscheinungsdatum(String erscheinungsdatum) {
this.erscheinungsdatum = erscheinungsdatum;
}
public boolean equals(Medien other) {
if(this.id == other.id) {
return true;
}else {
return false;
}
}
public void anzeigen()
{
System.out.println("\n"+"-----------------------------------------"+"\n"+"\n"+"[Medium]:"+"\n"+ "ID --> " + this.getId() + "\n"+ "Name --> " + this.getName() + "\n" + "Kommentar --> " + this.getKommentar()+ "\n" + "Erscheinungsdatum --> " + this.getErscheinungsdatum());
}
public void entfernungsBeschreibung() {
System.out.println("ID, Name, Typ --> " + this.getId()+ ", " + this.getClass() + ", "+ this.getName());
}
}
答案 0 :(得分:0)
您可以在静态方法中为成员使用不同的谓词,并在过滤时使用它们。请注意,对于前两个,我同时包含等于和包含,这取决于您要如何进行搜索,当然可以实现两个版本。
在Medien类中:
public static Predicate<Medien> nameFilter(String name) {
//return m -> m.getName().equals(name);
return m -> m.getName().contains(name);
}
public static Predicate<Medien> kommentar Filter(String kommentar) {
//return m -> m.getKommentar().equals(kommentar);
return m -> m.getKommentar().contains(kommentar);
}
public static Predicate<Medien> erscheinungsdatum Filter(String name) {
return m -> m.getErscheinungsdatum().equals(erscheinungsdatum);
}
然后像这样使用它们
mb.stream().filter(Medien.nameFilter("Java"));
mb.stream().filter(Medien.kommentarFilter("Alex Pina");
请注意,在您的代码中,mb
是一个Medienbibliothek
对象,在我的示例中mb
是一个ArrayList
对象。
答案 1 :(得分:0)
使用Java流进行过滤。
将所有Medien对象存储在originalList中。
List<Medien> originalList = new ArrayList<>();
Medien m1 = new Filme("Java Wars", "Claudio Landerer", "25.10.2018", 150, true, false);
Medien m2 = new EBooks("Cloverfield Paradox", "Julius Onah", "25.10.2018", 12345678, 120, 100000);
Medien m3 = new Filme("Haus des Geldes", "Alex Pina", "01.11.2018", 200, false, true);
Medien m4 = new EBooks("Poltergeist", "Tobe Hooper", "01.11.2018", 87654321, 175, 100);
originalList.add(m1);
originalList.add(m2);
originalList.add(m3);
originalList.add(m4);
现在为每种类型的过滤数据创建一个方法。 例如: 要根据名称进行过滤,请使用以下方法。
List<Medien> getListBasedOnName(String name){
return originalList.stream.filter(value ->
value.getName().equals(name)).collect(Collectors.toList());
}
需要为每个需要过滤的属性创建相似的方法。