import java.util.Scanner; /** * UserDialog-Klasse um die Verwendung von Methoden zu üben * * @author Kevin Maurizi * @since 2042.01.01 * @version 0.1 */ public class UserDialog { static Scanner scanner; public UserDialog(){ scanner = new Scanner(System.in); } public static void main(String[] args) { UserDialog userDialog = new UserDialog(); userDialog.run(); scanner.close(); } private void run() { char auswahl; System.out.println("Lieber Benutzer, herzlich willkommen zu diesem Programm"); printMenue(); auswahl = scanner.nextLine().charAt(0); while (auswahl != 'x'){ if(auswahl == 'r'){ rechner(); }else if(auswahl == 'h'){ hasenUndHuehner(); }else if(auswahl == 's'){ soccermanager(); }else{ System.out.println("Buchstabe nicht bekannt, bitte erneut eingeben!"); } printMenue(); auswahl = scanner.nextLine().charAt(0); } } /** * Diese Methode zeigt dem User das Menue an. */ private void printMenue(){ System.out.println(); System.out.println("=============================================="); System.out.println("Was möchten Sie mit dieser Applikation machen?"); System.out.println("Wählen Sie 'r' für Taschenrechner"); System.out.println("Wählen Sie 'h' für Hasen und Hühner Problem"); System.out.println("Wählen Sie 's' für Soccermanager"); System.out.println("Wählen Sie 'x' um das Programm zu beenden!"); System.out.print(">> "); } /** * Verrechnet zwei Werte zu einer Summe */ private void rechner(){ double zahl1, zahl2, summe; zahl1 = getValidDouble("Bitte geben Sie die erste Zahl ein >"); zahl2 = getValidDouble("Bitte geben Sie die zweite Zahl ein >"); summe = zahl1 + zahl2; System.out.println("Die Summe ist: " + summe); } /** * Löst das Hasen- und Hühnerproblem */ private void hasenUndHuehner(){ int animals, legs, rabbit, chicken, maxLegs, minLegs; animals = getValidInt("Anzahl Tiere >"); maxLegs = animals * 4; minLegs = animals *2; legs = getValidInt("Anzahl Beine >"); while(legs > maxLegs || legs < minLegs){ legs = getValidInt("Anzahl Beine ungültig, bitte erneut eingeben (Min: "+minLegs +" Max: " + maxLegs +") >"); } rabbit = animals; chicken = 0; while ((rabbit * 4 + chicken * 2) > legs) { rabbit = rabbit - 1; chicken = chicken + 1; } System.out.println("Es sind " + rabbit + " Hasen und " + chicken + " Huehner"); } /** * Anhand der Spielernummern können Bewertungen vergeben werden */ private void soccermanager() { int shirtNo, countRating; double totalRating, rating; shirtNo = getValidInt("Trikotnummer (1 - 99 / 0=Ende) >"); while (shirtNo != 0) { totalRating = 0.0; countRating = 0; rating = getValidDouble("Bewertung (1.0 - 6.0 / 0=Ende) >"); while (rating > 0) { totalRating = totalRating + rating; countRating = countRating + 1; rating = getValidDouble("Bewertung (1.0 - 6.0 / 0=Ende) >"); } System.out.println("Spieler: " + shirtNo + " / Durchschnitt: " + (totalRating / countRating)); shirtNo = getValidInt("Trikotnummer (1 - 99 / 0=Ende) >"); } } /** * Prüft ob ein Double eingegeben wurde, wenn nicht, wird ein Fehler ausgegeben und erneut eingelesen. * @return gibt das eingelesene Double zurück. */ private double getValidDouble(){ double zahl; while(!scanner.hasNextDouble()){ System.out.print("Bitte eine Zahl eingeben >"); scanner.nextLine(); } zahl = scanner.nextDouble(); scanner.nextLine(); return zahl; } /** * Prüft ob ein Int eingegeben wurde, wenn nicht, wird ein Fehler ausgegeben und erneut eingelesen. * @return gibt das eingelesene Int zurück. */ private int getValidInt(){ int zahl; while(!scanner.hasNextInt()){ System.out.print("Bitte eine Zahl eingeben >"); scanner.nextLine(); } zahl = scanner.nextInt(); scanner.nextLine(); return zahl; } /** * Gibt den Text aus dem Parameter ausgabe auf der Konsole aus. Prüft anschliessend ob ein Double eingegeben wurde, wenn nicht, wird ein Fehler ausgegeben und erneut eingelesen. * @param ausgabe Text der zuerst ausgegeben wird. * @return gibt das eingelesene Int zurück. */ private int getValidInt(String ausgabe){ System.out.print(ausgabe); int zahl; while(!scanner.hasNextInt()){ System.out.print("Bitte eine Zahl eingeben >"); scanner.nextLine(); } zahl = scanner.nextInt(); scanner.nextLine(); return zahl; } /** * Gibt den Text aus dem Parameter ausgabe auf der Konsole aus. Prüft anschliessend ob ein Double eingegeben wurde, wenn nicht, wird ein Fehler ausgegeben und erneut eingelesen. * @param ausgabe Text der zuerst ausgegeben wird. * @return gibt das eingelesene Double zurück. */ private double getValidDouble(String ausgabe){ System.out.print(ausgabe); double zahl; while(!scanner.hasNextDouble()){ System.out.print("Bitte eine Zahl eingeben >"); scanner.nextLine(); } zahl = scanner.nextDouble(); scanner.nextLine(); return zahl; } }