Könnt ihr mir beim Programmieren eines Vokabeltrainers helfen?
Hallo!
Ich bin gerade an dem Programmieren eines Vokabeltrainers über BlueJ. Die Eingabe der deutschen und englischen Vokabeln, die abgefragt werden sollen, funktioniert schon ganz gut.
Leider habe ich ein Problem: Und zwar weiß ich nicht, wie ich die Vokabeln abgefragt bekomme. Bei
current = voks.getContent();
startet die Abfrage. Ab hier habe ich gar keine Ahnung, was ich noch schreiben soll. Kann mir jemand helfen?
import java.util.*;
public class Trainer {
String d;
String e;
Vokabel current;
public void main() {
List<Vokabel> voks = new List();
char antwort;
Scanner s = new Scanner(System.in);
int z = 0;
voks.toFirst();
antwort = 'y';
while (antwort == 'y') {
z++;
System.out.print('\u000C');
System.out.println("Geben Sie bitte Ihre " + z + ". Vokabel auf Deutsch ein!");
d = s.next();
System.out.println("Geben Sie nun die entsprechende Übersetzung auf English an.");
e = s.next();
Vokabel v = new Vokabel(d, e);
voks.append(v);
voks.next();
System.out.println("Falls Sie keine weitere Vokabel eingeben wollen, drücken Sie 'n' für Nein, falls doch dann 'y' für Ja.");
antwort = s.next().charAt(0);
}
voks.toFirst();
while (voks.hasAccess()) {
current = voks.getContent();
System.out.print(current.getEVok() + " ");
System.out.println("Geben Sie die deutsche Bedeutung ein.");
voks.next();
current = voks.getContent();
System.out.print(current.getEVok() + " ");
System.out.println(current.getDVok());
voks.next();
}
}
}
2 Antworten
1) Es wäre besser, du würdest all deinen Variablen (und Methoden) aussagekräftige Bezeichner geben (Negativbeispiele sind d, e, voks) und bei einer Sprache bleiben (vergleiche current und Vokabel).
2) Du scheinst nicht mit der Java SE zu arbeiten, denn weder beinhaltet die List aus dem java.util-Package Methoden wie toFirst, next oder hasAccess, noch wäre so eine Instanzierung
List<Vokabel> voks = new List();
möglich. List ist ein Interface. Wieso bei dem rechtsseitigen Wert die generische Typangabe fehlt, ist für mich nicht verständlich. Ich würde zumindest so eine Zuweisung erwarten:
List<Vokabel> vocabularies = new List<>();
3) Da du nicht mit einer List-Implementation der Java SE arbeitest, kann man bei diesem Aufruf
current = voks.getContent();
nur raten, was wirklich passiert. Der Name der Methode verspricht, den Inhalt der Liste zu liefern. Die Variable current wiederum stellt nur eine einzige Vokabel dar. Also ist die Methode entweder schlecht/falsch benannt (sie liefert nur einen einzelnen Datensatz / eine Vokabel) oder du bräuchtest eigentlich eine andere Variable anderen Typs. Von Ersterem gehe ich folgend einmal aus.
Nach Ausgabe der Vokabel müsstest du mit deinem Scanner-Objekt eine Eingabe vom Nutzer auslesen. Dein Objekt für die Vokabel müsste dann noch eine Methode haben, die die deutsche Übersetzung zurückgibt, damit du die Eingabe gegenprüfen kannst. Vergiss an der Stelle nicht: Strings werden via equals-Methode miteinander verglichen.
someString.equals(anotherString)
Was die Reaktion auf diese Auswertung sein soll, müsstest du nun noch definieren. Vielleicht nur eine Ausgabe wie Richtig/Falsch oder doch irgendetwas Komplexeres (ein Punktesystem / eine Wiederholung der gleichen Abfrage / ...).
Im Anschluss wird mit next wohl die nächste Vokabel aufgerufen und hasAccess prüft wahrscheinlich, ob es noch Kandidaten in der Liste gibt, die man aufrufen kann.
Hallo!
Ich habe keine eigenen Erfahrungen mit Java, aber ich kann eine Suchmaschine bedienen:
https://www.startpage.com/rvd/search?query=programmierung%20java%20vokabeltrainer&language=deutsch
https://www.youtube.com/results?search_query=java+vokabeltrainer+programmieren
Ansonsten schau auch mal hier ein klein wenig rein:
https://www.startpage.com/rvd/search?query=sauber%20programmieren%20java&language=deutsch
https://www.youtube.com/results?search_query=java+sauber+programmieren
Gruß
Martin