Variablen dividieren mit Swift

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Variablen dividieren mit Swift

    Hallo liebes Team!
    Ich bin noch ein ziemlicher Anfänger in X Code und wollte mal probieren eine App für meinen Notendurchschnitt zu entwickeln... Doch leider scheiterte ich schon am Anfang und bekomme es einfach nicht hin eine Variable durch eine Zahl oder andere Variable zu dividieren. Bei meiner suche im Internet habe ich leider auch nichts hilfreiches gefunden und hoffe nun so vielleicht Hilfe zu finden. Ich hänge euch mal meinen verzweifelten Lösungsansatz an.
    Schon einmal vielen Dank im Voraus! :)

    Ich weiß, dass es alles noch sehr umständlich gemacht ist, aber vielleicht könnt ihr mir auch da helfen...
    Der Fehler, bei dem ich nicht weiterkomme liegt vor allem bei:

    Endd = (Z1 + Z2)
    Endd == Endd : 2

    Quellcode

    1. import UIKit
    2. var Z1 = 0
    3. var Z2 = 0
    4. var Z3 = 0
    5. var Z4 = 0
    6. var Z5 = 0
    7. var Z6 = 0
    8. var Z7 = 0
    9. var Z8 = 0
    10. var ZK = 0
    11. var Endd = 0
    12. class ViewController: UIViewController {
    13. @IBOutlet weak var K1: UITextField!
    14. @IBOutlet weak var K2: UITextField!
    15. @IBOutlet weak var K3: UITextField!
    16. @IBOutlet weak var K4: UITextField!
    17. @IBOutlet weak var K5: UITextField!
    18. @IBOutlet weak var K6: UITextField!
    19. @IBOutlet weak var K7: UITextField!
    20. @IBOutlet weak var K8: UITextField!
    21. @IBOutlet weak var Fehler: UILabel!
    22. @IBOutlet weak var End: UILabel!
    23. override func viewDidLoad() {
    24. super.viewDidLoad()
    25. // Do any additional setup after loading the view.
    26. }
    27. @IBAction func refresh1(_ sender: Any) {
    28. if K1.text == "1"{
    29. Z1 = 1
    30. Fehler.isHidden = true
    31. K1.backgroundColor = UIColor.white
    32. }else if K1.text == "2"{
    33. Z1 = 2
    34. Fehler.isHidden = true
    35. K1.backgroundColor = UIColor.white
    36. }else if K1.text == "3"{
    37. Z1 = 3
    38. Fehler.isHidden = true
    39. K1.backgroundColor = UIColor.white
    40. }else if K1.text == "4"{
    41. Z1 = 4
    42. Fehler.isHidden = true
    43. K1.backgroundColor = UIColor.white
    44. }else if K1.text == "5"{
    45. Z1 = 5
    46. Fehler.isHidden = true
    47. K1.backgroundColor = UIColor.white
    48. }else if K1.text == "6"{
    49. Z1 = 6
    50. Fehler.isHidden = true
    51. K1.backgroundColor = UIColor.white
    52. }else if K1.text == "7"{
    53. Z1 = 7
    54. Fehler.isHidden = true
    55. K1.backgroundColor = UIColor.white
    56. }else if K1.text == "8"{
    57. Z1 = 8
    58. Fehler.isHidden = true
    59. K1.backgroundColor = UIColor.white
    60. }else if K1.text == "9"{
    61. Z1 = 9
    62. Fehler.isHidden = true
    63. K1.backgroundColor = UIColor.white
    64. }else if K1.text == "10"{
    65. Z1 = 10
    66. Fehler.isHidden = true
    67. K1.backgroundColor = UIColor.white
    68. }else if K1.text == "11"{
    69. Z1 = 11
    70. Fehler.isHidden = true
    71. K1.backgroundColor = UIColor.white
    72. }else if K1.text == "12"{
    73. Z1 = 12
    74. Fehler.isHidden = true
    75. K1.backgroundColor = UIColor.white
    76. }else if K1.text == "13"{
    77. Z1 = 13
    78. Fehler.isHidden = true
    79. K1.backgroundColor = UIColor.white
    80. }else if K1.text == "14"{
    81. Z1 = 14
    82. Fehler.isHidden = true
    83. K1.backgroundColor = UIColor.white
    84. }else if K1.text == "15"{
    85. Z1 = 15
    86. Fehler.isHidden = true
    87. K1.backgroundColor = UIColor.white
    88. }else {
    89. K1.text = ""
    90. K1.backgroundColor = UIColor.red
    91. Fehler.isHidden = false
    92. }
    93. if K2.text == "1"{
    94. Z2 = 1
    95. Fehler.isHidden = true
    96. }else if K2.text == "2"{
    97. Z2 = 2
    98. Fehler.isHidden = true
    99. }else if K2.text == "3"{
    100. Z2 = 3
    101. Fehler.isHidden = true
    102. }else if K2.text == "4"{
    103. Z2 = 4
    104. Fehler.isHidden = true
    105. }else if K2.text == "5"{
    106. Z2 = 5
    107. Fehler.isHidden = true
    108. }else if K2.text == "6"{
    109. Z2 = 6
    110. Fehler.isHidden = true
    111. }else if K2.text == "7"{
    112. Z2 = 7
    113. Fehler.isHidden = true
    114. }else if K2.text == "8"{
    115. Z2 = 8
    116. Fehler.isHidden = true
    117. }else if K2.text == "9"{
    118. Z2 = 9
    119. Fehler.isHidden = true
    120. }else if K2.text == "10"{
    121. Z2 = 10
    122. Fehler.isHidden = true
    123. }else if K2.text == "11"{
    124. Z2 = 11
    125. Fehler.isHidden = true
    126. }else if K2.text == "12"{
    127. Z2 = 12
    128. Fehler.isHidden = true
    129. }else if K2.text == "13"{
    130. Z2 = 13
    131. Fehler.isHidden = true
    132. }else if K2.text == "14"{
    133. Z2 = 14
    134. Fehler.isHidden = true
    135. }else if K2.text == "15"{
    136. Z2 = 15
    137. Fehler.isHidden = true
    138. }else {
    139. K2.text = ""
    140. Fehler.isHidden = false
    141. }
    142. Endd = (Z1 + Z2)
    143. Endd == Endd : 2
    144. }
    145. }
    Alles anzeigen
  • Naja ganz allgemein ohne auf meinen Code zu achten möchte ich zwei Variablen, in denen Zahlen gespeichert sind, miteinander addieren und schließlich dann, durch eine andere Variable teilen. das Ergebnis soll wiederum eine Variable sein und später in einem Textfeld ausgegeben werden.
  • Ich bin selbst ein Anfänger, aber ich glaube, da du oben jeweils die Zahlen in Anführungszeichen setzt, prüfst du darauf, ob es ein String (eine Zeichenfolge) ist und nicht die eigentliche Zahl. Der Wert wird aber niemals erreicht, weil der Anwender vermutlich nicht "1" sondern 1 eingibt.

    Ob der Code unten funktioniert, weiß ich ehrlich gesagt gar nicht. So wie es da steht, ließt es für mich wie die Addition von Strings, also eine Konkatenation (anstatt einer Addition - es wäre also ein Aneinanderreihen der Zeichen -> "12" statt 3).

    Unten verwendest du zwei "==", das heißt, du prüfst und weist nicht zu. Du erhältst also true oder false statt des Bruchs. Zudem teilst du ganze Zahlen (Integer) miteinander, das wird vermutlich zu unschönen Rundungen führen, eventuell solltest du in diesem Fall auf Floats (Fließkommazahlen) umsteigen.

    Also die Änderungen mal als Code:

    Quellcode

    1. if K1.text == "1" {
    2. Z1 = 1.0
    3. Fehler.isHidden = true
    4. K1.backgroundColor = UIColor.white
    5. }
    6. ...
    7. Endd = (Z1 + Z2) / 2.0
    Durch das Anfügen von .0 wird aus dem Integer ein Float und du bekommst beim Bruch auch Nachkommastellen.

    Ich kenne mich mit UIKit noch weniger aus als mit SwiftUI, aber ich gehe sehr stark davon aus, dass das Auswerten der Nutzereingaben in den Textfeldern stark zu vereinfachen und vor allem zu kürzen ist, eventuell kann hier einer der erfahrenen Forennutzer helfen :)

    /Edit: ich glaube, ich habe selbst einen Denkfehler.. in dem Textfeld wird wahrscheinlich ein String zurückgeliefert, also war dein Vergleich richtig! Du könntest diesen Wert aber glaube ich direkt vom String zu Float (oder mit einem Zwischenschritt über Int) konvertieren und damit auch schon die Eingabekontrolle durchführen.. wenn die Konvertierung fehlschlägt, war die Nutzereingabe keine Zahl.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tyll ()

  • @Theo210703: Nur ergänzend bzw. erklärend:

    tyll schrieb:

    Unten verwendest du zwei "==", das heißt, du prüfst und weist nicht zu. Du erhältst also true oder false statt des Bruchs.
    Genau auf diesen Punkt versuchte ich Dich mit meinen Fragen zu stoßen - nachdem mein Hinweis auf den fälschlich verwendeten Vergleichsoperator nicht "zündete"... Letztlich wolltest Du ja erst addieren und dann durch die Anzahl teilen (was vollkommen okay ist), aber musst natürlich in beiden Fällen eine Zuweisung verwenden: Ein Gleichheitszeichen.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Okay ich habe jetzt ein bisschen geändert und es funktioniert nur halb. Ich finde meinen Fehler wieder nicht und suche bei euch Hilfe. Ich habe den Code jetzt etwas abgeändert für dir zwei Zahlen die addiert werden sollen und dann durch 2 geteilt.

    Endd = Int(Z1 + Z2)
    let ende = Double(Endd / 2)
    End.text = "\(ende)"


    Doch bei dieser Variante gibt er nur ganze Zahlen aus... Ich möchte aber auf zwei Kommastellen stehen haben. Wie böse
  • Erst einmal vielen Dank für die Antworten!
    Jedoch habe ich dies Versucht und es klappt immer noch nicht :(


    Endd = (Z1 + Z2)
    let ende = (Double(Endd) / 2.00)
    End.text = "\(ende)"

    was kann ich noch probieren?

    UPDATE:

    Endd = (Z1 + Z2)
    let ende = (Double(Endd) / 2.00)
    End.text = "\(ende)"

    mit dieser Variante funktionier es jetzt, Vielen Dank