Kotlin: Arrays
Willemers Informatik-Ecke
  • Schleifen
  • Funktionen

  • Ein Array ist bei Kotlin eine Klasse.

    Anlegen

    Ein Array kann durch den Aufruf von arrayOf angelegt werden. Dabei werden die zukünfigen Inhalte einfach aufgelistet.
    val lotto = arrayOf(2, 5, 19, 24, 25, 39)
    
    Die Inhalte des Array können unterschiedlichen Typs sein. Will man erzwingen, dass alle Elemente ganze Zahlen sind, gibt man den Typ in spitzen Klammern an.
    val lotto = arrayOf<Int>(2, 5, 19, 24, 25, 39)
    
    Eine Aufzählung wird bei größeren Arrays sehr unpraktisch. In diesen Fällen ist es sinnvoller, den Array-Konstruktor zu verwenden. Der Konstruktor erwartet als ersten Parameter die Anzahl der Elemente und als zweiten Parameter eine Lambda-Funktion zum Initialisieren der Elemente. Die einfachste Lambda-Methode ist ein Default-Literal in geschweiften Klammern.
    var lotto = Array(6, {0})
    
    Auch hier kann der Typ in spitzen Klammern festgelegt werden.
    var lotto = Array<Int>(6, {0})
    
    Um die Lottozahlen mit zufälligen Werten vorzubesetzen, könnte man auch eine Lambda-Funktion angeben, die einen zufälligen Wert zwischen 1 und 49 setzt.
    var lotto = Array<Int>(6, {i -> (1..49).random()})
    

    Zugriff auf die Elemente

    Der Zugriff auf die Elemente des Arrays erfolgt über eckige Klammern. In diesen Klammern steht der Index des Arrays. Der Index beginnt bei 0. Bei einem Array können die rechteckigen Klammern sowohl zum Auslesen als auch zum Besetzen des Arrays verwendet werden.
    zweite = lotto[1]
    lotto[2] = 22
    
    Das folgende Beispiel erzeugt die Lottozahlen. In der äußeren Schleife werden die Zufallszahlen aus dem Bereich von 1 bis 49 gezogen. In der inneren Schleife werden alle bisher gezogenen Zahlen mit der aktuell gezogenen verglichen. Gibt es eine Doppelung, wird i dekrementiert und damit eine Neuziehung erzwungen. Im Anschluss kann es also keine doppelten Zahlen mehr geben. Zu guter Letzt wird das Array durch Aufruf der Methode sort sortiert.
    var lotto = Array<Int>(6, {0})
    var i = 0
    while (i<6) {
        lotto[i] = (1..49).random()
        var j = 0
        while (j<i) {
            if (lotto[i]==lotto[j]) {
                i--
            }
            j++
        }
        i++
    }
    lotto.sort()
    

    Durch ein Array laufen

    Um die Inhalte des Lotto-Arrays auf dem Bildschirm anzuzeigen, kann man eine for-Schleife benutzen, die einer Variablen nacheinander jeden Wert des Arrays zuweist.
    for (zahl in lotto) {
        println(zahl)
    }
    
    Die Variable zahl muss nicht einmal definiert werden. Sie übernimmt automatisch den Typ eines Array-Elements.

    Man kann auch über den Index eine Schleife bauen. Als Grenze kann man das Attribut size des Arrays nutzen.

    var i = 0
    while (i < lotto.size) {
        println(lotto[i])
        i++
    }
    
    Alternativ kann auch eine for-Schleife mit einem Bereich verwendet werden.
    for (k in 0..lotto.size-1) {
        println(lotto[k])
    }