enum Auswahl in wehn

  • Antworten:3
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 650

01.06.2024, 15:35:12 via Website

Hallo zusammen

Ich habe eine enum-Klasse

enum class operator {
AD, SU, MU, DI

}

Die möchte ich in einer when verwenden. Ich möchte, dass per Zufall eines der vier Möglichkeiten ausgewählt wird.

val opera : operator

    when(opera){
        operator.AD -> {
            resultat = zahl_eins + zahl_zwei
            res = zahl_eins.toString() + " + " + zahl_zwei.toString()
        }
        operator.SU -> {
            if( zahl_zwei > zahl_eins){
                var pool = zahl_eins
                zahl_eins = zahl_zwei
                zahl_zwei = pool
            }
            resultat = zahl_eins - zahl_zwei
            res = zahl_eins.toString() + " - " + zahl_zwei.toString()
        }
        operator.MU -> {
            resultat = zahl_eins * zahl_zwei
            res = zahl_eins.toString() + " x " + zahl_zwei.toString()
        }
        operator.DI -> {
            zahl_zwei = (1 .. 9).random()
            resultat = zahl_eins * zahl_zwei
            var pool = resultat
            resultat = zahl_eins
            zahl_eins = pool
            res = zahl_eins.toString() + " : " + zahl_zwei.toString()
        }
    }

Wie muss der Entscheid bei wehn aussehen, damit eines der vier Möglichen Zweige ausgeführt wird?

Gruss Renato

Kommentieren
Beste Antwort
Robbiani Renato
  • Forum-Beiträge: 650

01.06.2024, 16:33:53 via Website

Hallo zusammen

Ich habe folgende Lösung gefunden:

val opera : Array<operator> = operator.values()

    when(opera.get(3).toString()){
        "AD" -> {
            resultat = zahl_eins + zahl_zwei
            res = zahl_eins.toString() + " + " + zahl_zwei.toString()
        }
        "SU" -> {
            if( zahl_zwei > zahl_eins){
                var pool = zahl_eins
                zahl_eins = zahl_zwei
                zahl_zwei = pool
            }
            resultat = zahl_eins - zahl_zwei
            res = zahl_eins.toString() + " - " + zahl_zwei.toString()
        }
        "MU" -> {
            resultat = zahl_eins * zahl_zwei
            res = zahl_eins.toString() + " x " + zahl_zwei.toString()
        }
        "DI" -> {
            zahl_zwei = (1 .. 9).random()
            resultat = zahl_eins * zahl_zwei
            var pool = resultat
            resultat = zahl_eins
            zahl_eins = pool
            res = zahl_eins.toString() + " : " + zahl_zwei.toString()
        }
        else -> {
            resultat = zahl_eins + zahl_zwei
            res = zahl_eins.toString() + " + " + zahl_zwei.toString()
        }
    }

Ich weiss nicht ob dies die Beste Lösung ist, aber es funktioniert.
Gruss Renato

Hilfreich?
koje71
Kommentieren
koje71
  • Forum-Beiträge: 72

03.06.2024, 11:24:00 via Website

so sollte es auch funktionieren:

enum class operator { AD, SU, MU, DI } 

when (operator.values().random()) { 
 operator.AD -> .. 
 operator.SU -> .. 
 else -> .. 
}

die Random Funktion liefert aus einer Liste von Elementen ein zufälliges Element aus.

— geändert am 03.06.2024, 11:43:28

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

03.06.2024, 16:38:57 via Website

Ciao koje71

Herzlichen Dank für deine Hilfe.
Mal schauen, was besser geht.

Gruss Renato

Hilfreich?
koje71
Kommentieren