Inhaltsverzeichnis
Übung: Passwortmanager
Schreibe eine Klasse Passwortmanager
mit den Methoden setzeNameUndPasswort
und überprüfePasswort
!
Überlege:
- Welche Funktionalität wird erwartet?
- Welche Attribute benötigt die Klasse?
- Welche Parameter sollten die Methoden haben?
public class PasswortManager { private String benutzername; private String passwort; public void setzeBenutzernameUndPasswort(String bn, String pw){ benutzername = bn; passwort = pw; } public boolean überprüfePasswort(String bn, String pw){ if(bn.equals((benutzername))){ if(pw.equals(passwort)){ return true; } } return false; } }
6. Die einseitige/zweiseitige Bedingung
Aufgabe 1
Der Eintrittspreis eines Kinos wird nach folgender Tabelle bestimmt:
Personenkreis | Alter | Eintrittspreis |
---|---|---|
Kinder | Jünger als 13 Jahre | 7,00 € |
Jugendliche | 13 - 17 Jahre | 9,00 € |
Erwachsene | 18 - 59 Jahre | 12,00 € |
Senioren | älter als 59 Jahre | 10,00 € |
Schreibe eine Funktion kinopreis(int alter)
, die abhängig vom Alter den dazugehörigen Eintrittspreis ermittelt und zurückliefert!
public double kinopreis(int alter){ if(alter < 13){ return 7; } else { if(alter <= 17){ return 9; } else { if(alter <= 59){ return 12; } else { return 10; } } } }
Wichtig: Unterscheide den Zuweisungsoperator = vom Vergleichsoperator ==
monat = 2
ist eine Anweisung, die der der Variablemonat
den Wert 2 zuweist.monat == 2
ist eine Aussage. Der Wert der Variablemonat
wird mit 2 verglichen. Entsprechend hat die Aussage den Werttrue
oderfalse
.
Der Modulo-Operator %
%
ist der Modulo-Operator. a % b
ist der Rest der Division von a
durch b
, z.B.
10 % 3 == 1 17 % 5 == 2 21 % 3 == 0 usw.
Aufgabe 2:
Erstelle eine Methode tageImMonat(int monat, int jahr) , die nach Eingabe der Monatszahl (1 == Jan, 2 == Feb, …) und der Jahreszahl die Anzahl der Tage des Monats berechnet.
Lösung ohne Beachtung von Schaltjahren
public class DatumsRechner { public int tageImMonat(int monat, int jahr){ if(monat == 2){ return 28; // Das stimmt natürlich nicht für Schaltjahre! } if(monat <= 7){ // Ist der Wert von Monat ungerade? if(monat % 2 == 1){ return 31; } else { return 30; } } else { if(monat % 2 == 1){ return 30; } else { return 31; } } } }
Berechnung der Tage eines Monats unter Berücksichtigung von Schaltjahren
Im Wikipedia-Artikel zu Schaltjahren erfährt man:
- „Die durch 4 ganzzahlig teilbaren Jahre sind Schaltjahre. […]
- Säkularjahre, also die Jahre, die ein Jahrhundert abschließen (z.B. 1800, 1900, 2100 und 2200) sind keine Schaltjahre. […]
- Schließlich sind die durch 400 ganzzahlig teilbaren Säkularjahre doch Schaltjahre. Damit sind z.B. 1600, 2000 und 2400 jeweils wieder Schaltjahre. […]“
public class DatumsRechner { public int tageImMonat(int monat, int jahr){ if(monat == 2){ if(istSchaltjahr(jahr)){ return 29; } else { return 28; } } if(monat <= 7){ if(monat % 2 == 1){ return 31; } else { return 30; } } else { if(monat % 2 == 1){ return 30; } else { return 31; } } } private boolean istSchaltjahr(int jahr){ // Jahreszahl ist kein Vielfaches von 4 if(jahr % 4 != 0){ return false; } // Jahreszahl ist ein Vielfaches von 400 if(jahr % 400 == 0){ return true; } // Jahreszahl ist ein Vielfaches von 100 if(jahr % 100 == 0){ return false; } return true; } }
Zur Deklaration der Methode private boolean istSchaltjahr(int jahr)
:
- Das Schlüsselwort
private
bedeutet, dass diese Methode nur innerhalb der Klasse sichtbar ist. - Variablen des Datentyps
boolean
können nur die Wertetrue
oderfalse
annehmen. Man spricht auch von booleschen Variablen oder Wahrheitswerten.