Menu
Coddy logo textTech

Wiederholung – Bankkonto

Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 11 von 57.

challenge icon

Aufgabe

Mittel

Vervollständige die Klasse BankAccount(val owner: String, opening: Int). Ihr init-Block verlangt einen nicht leeren Besitzer (owner is empty) und eine nicht negative Ersteinlage (opening must not be negative). balance hat einen privaten Setter. Transaktionen werden in einer privaten MutableList gespeichert und als val transactions: List<String> bereitgestellt. deposit(amount) und withdraw(amount) geben bei Erfolg true zurück: Beträge unter 1 werden abgelehnt, und eine Auszahlung, die größer als das Guthaben ist, wird abgelehnt; erfolgreiche Änderungen werden als +50 oder -20 aufgezeichnet. statement() gibt Ada: 30 (+50, -20) oder Ada: 0 (no transactions) zurück.

Der bereitgestellte Code liest den Besitzer und die Ersteinlage (name,amount) und anschließend die Befehle d n oder w n. Für fehlgeschlagene Befehle gibt er refused aus und anschließend die Kontoinformation; bei einem ungültigen Konto wird die Fehlermeldung ausgegeben.

Dein Code gehört in BankAccount.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

fun main() {
    // Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
    val input = generateSequence(::readLine).toList()
    try {
        val (name, amount) = input[0].split(",")
        val account = BankAccount(name, amount.toInt())
        for (cmd in input.drop(1)) {
            val (op, n) = cmd.split(" ")
            val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
            if (!ok) println("refused")
        }
        println(account.statement())
    } catch (e: IllegalArgumentException) {
        println(e.message)
    }
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Kotlin-Playground