< oder >

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Warum funktioniert dieser Code nicht?
    Es wird beide male angezeigt das ich zu wenig geld habe:
    Also Wenn Geld = 100 und Kosten = 2 dann kommt zu wenig geld und umgekehrt auch:

    VB.NET-Quellcode

    1. If Geld <= Kosten Then
    2. MsgBox("Sie haben zu wenig Geld", MsgBoxStyle.Information, "")
    3. Else
    4. end if
    Also ich Poste mal den ganzen Code:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Geld As String = "100"
    3. Dim Kosten As String = "0"
    4. Dim Promille As String = "0"
    5. Dim Name2 As String = InputBox("Wie heißen sie?", " ", "Name")
    6. Dim Haustier As String = ""
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. Try
    9. ListBox2.Items.Add(ListBox1.SelectedItem)
    10. If ListBox1.SelectedItem = "Bier" Then
    11. Kosten += 5
    12. End If
    13. If ListBox1.SelectedItem = "Vodka" Then
    14. Kosten += 8
    15. End If
    16. If ListBox1.SelectedItem = "Brötchen" Then
    17. Kosten += 2
    18. End If
    19. If ListBox1.SelectedItem = "T-Shirt" Then
    20. Kosten += 15
    21. End If
    22. If ListBox1.SelectedItem = "Hose" Then
    23. Kosten += 15
    24. End If
    25. If ListBox1.SelectedItem = "Schlagring" Then
    26. Kosten += 30
    27. End If
    28. If ListBox1.SelectedItem = "Pistole" Then
    29. Kosten += 150
    30. End If
    31. If ListBox1.SelectedItem = "Hund" Then
    32. Kosten += 120
    33. End If
    34. If ListBox1.SelectedItem = "Katze" Then
    35. Kosten += 50
    36. End If
    37. If ListBox1.SelectedItem = "Maus" Then
    38. Kosten += 15
    39. End If
    40. If ListBox1.SelectedItem = "Ratte" Then
    41. Kosten += 20
    42. End If
    43. If ListBox1.SelectedItem = "Pferd" Then
    44. Kosten += 500
    45. End If
    46. Catch ex As Exception
    47. MsgBox("Bitte das zum Kauf gewünschte Objekt wählen", MsgBoxStyle.Information, "")
    48. End Try
    49. Label1.Text = Kosten & " €"
    50. Label2.Text = "Geld " & Geld & " €"
    51. End Sub
    52. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    53. Try
    54. If ListBox2.SelectedItem = "Bier" Then
    55. Kosten -= 5
    56. End If
    57. If ListBox2.SelectedItem = "Vodka" Then
    58. Kosten -= 8
    59. End If
    60. If ListBox2.SelectedItem = "Brötchen" Then
    61. Kosten -= 2
    62. End If
    63. If ListBox2.SelectedItem = "T-Shirt" Then
    64. Kosten -= 15
    65. End If
    66. If ListBox2.SelectedItem = "Hose" Then
    67. Kosten -= 15
    68. End If
    69. If ListBox2.SelectedItem = "Schlagring" Then
    70. Kosten -= 30
    71. End If
    72. If ListBox2.SelectedItem = "Pistole" Then
    73. Kosten -= 150
    74. End If
    75. If ListBox2.SelectedItem = "Hund" Then
    76. Kosten -= 120
    77. End If
    78. If ListBox2.SelectedItem = "Katze" Then
    79. Kosten -= 50
    80. End If
    81. If ListBox2.SelectedItem = "Maus" Then
    82. Kosten -= 15
    83. End If
    84. If ListBox2.SelectedItem = "Ratte" Then
    85. Kosten -= 20
    86. End If
    87. If ListBox2.SelectedItem = "Pferd" Then
    88. Kosten -= 500
    89. End If
    90. ListBox2.Items.Remove(ListBox2.SelectedItem)
    91. Catch ex As Exception
    92. MsgBox("Bitte das zum zurücklegen gewünschte Objekt wählen", MsgBoxStyle.Information, "")
    93. End Try
    94. Label1.Text = Kosten & " €"
    95. Label2.Text = "Geld " & Geld & " €"
    96. End Sub
    97. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    98. If Geld <= Kosten Then
    99. MsgBox("Sie haben zu wenig Geld", MsgBoxStyle.Information, "")
    100. Else
    101. For Each item As String In ListBox2.Items
    102. ListBox3.Items.Add(item)
    103. Next
    104. Geld = Geld - Kosten
    105. MsgBox("Sie haben noch " & Geld & " €", MsgBoxStyle.Information, "")
    106. ListBox2.Items.Clear()
    107. For Each item As String In ListBox2.Items
    108. If item.Contains("Hund") Then
    109. Haustier = "Hund"
    110. End If
    111. If item.Contains("Katze") Then
    112. Haustier = "Katze"
    113. End If
    114. If item.Contains("Maus") Then
    115. Haustier = "Maus"
    116. End If
    117. If item.Contains("Ratte") Then
    118. Haustier = "Ratte"
    119. End If
    120. If item.Contains("Pferd") Then
    121. Haustier = "Pferd"
    122. End If
    123. Next
    124. End If
    125. Label2.Text = "Geld " & Geld & " €"
    126. Label1.Text = "Kosten: 0 €"
    127. End Sub
    128. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    129. If ListBox3.SelectedItem = "" Then
    130. MsgBox("Bitte Inventar auswählen", MsgBoxStyle.Information, "")
    131. Else
    132. If ListBox3.SelectedItem = "Bier" Then
    133. MsgBox("Ihr Promillewert ist um 0.3 gestiegen", MsgBoxStyle.Information, "")
    134. Promille += 0.3
    135. ListBox3.Items.Remove(ListBox3.SelectedItem)
    136. End If
    137. If ListBox3.SelectedItem = "Vodka" Then
    138. MsgBox("Ihr Promillewert ist um 0.9 gestiegen", MsgBoxStyle.Information, "")
    139. Promille += 0.9
    140. ListBox3.Items.Remove(ListBox3.SelectedItem)
    141. End If
    142. If ListBox3.SelectedItem = "Brötchen" Then
    143. MsgBox("Ihr Promillewert ist um 0.5 gesunken", MsgBoxStyle.Information, "")
    144. Promille -= 0.5
    145. ListBox3.Items.Remove(ListBox3.SelectedItem)
    146. End If
    147. If ListBox3.SelectedItem = "T-Shirt" Then
    148. MsgBox("Sie haben das T-Shirt nun an. Sie werden ab jetzt eine bessere Verteidigung haben", MsgBoxStyle.Information, "")
    149. ListBox3.Items.Remove(ListBox3.SelectedItem)
    150. End If
    151. If ListBox3.SelectedItem = "Hose" Then
    152. MsgBox("Sie haben die Hose nun an. Sie werden ab jetzt eine bessere Verteidigung haben", MsgBoxStyle.Information, "")
    153. ListBox3.Items.Remove(ListBox3.SelectedItem)
    154. End If
    155. If ListBox3.SelectedItem = "Schlagring" Then
    156. MsgBox("Sie haben den Schlagring nun an. Sie werden ab jetzt eine bessere Offensive haben", MsgBoxStyle.Information, "")
    157. ListBox3.Items.Remove(ListBox3.SelectedItem)
    158. End If
    159. If ListBox3.SelectedItem = "Pistole" Then
    160. MsgBox("Sie haben die Pistole nun angelegt. Sie werden ab jetzt eine bessere Offensive haben", MsgBoxStyle.Information, "")
    161. ListBox3.Items.Remove(ListBox3.SelectedItem)
    162. End If
    163. End If
    164. End Sub
    165. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    166. Label5.Text = Name2
    167. Label3.Text = "Promille " & Promille & " ‰"
    168. Label4.Text = "Geld " & Geld & " €"
    169. Label6.Text = "Haustier " & Haustier
    170. End Sub
    171. End Class
    Hallo Markushettmann,

    das ist wieder ein Fall von Kann-Gar-Nicht-Sein.

    Die Bedingung - in deinem Fall - wird wahr sobald die Kosten größer oder gleich dem Geld sind.
    Hast du schonmal einen Breakpoint gesetzt ?

    EDIT:
    Das dachte ich mir schon - Kotzfaktor ist hier wieder recht hoch.
    Warum um Himmelswillen rechnest du mit String ?

    Gruss

    mikeb69

    mikeb69 schrieb:

    Hallo Markushettmann,

    das ist wieder ein Fall von Kann-Gar-Nicht-Sein.

    Die Bedingung - in deinem Fall - wird wahr sobald die Kosten größer oder gleich dem Geld sind.
    Hast du schonmal einen Breakpoint gesetzt ?

    EDIT:
    Das dachte ich mir schon - Kotzfaktor ist hier wieder recht hoch.
    Warum um Himmelswillen rechnest du mit String ?

    Gruss

    mikeb69




    Also versucht habe ich bis jetzt:

    VB.NET-Quellcode

    1. <

    VB.NET-Quellcode

    1. >


    Und es wird jedesmal angezeigt zu wenig geld.

    Wer weiß wie man den code zsuammenfassen kann bitte sagen :D
    Ich glaube also wen du bei den Kosten addieren willst dann machst du das meines wissen falsch weil:
    Wenn du Kosten += 2 und Kosten + = 8 hast z.b. dann hast du net 10 sondern 28
    Oder wolltest du das so ?
    Wenn du rechnen wolltest schau mal nach dem Befehl Val kann dir auch helfen wenn du willst.
    EIDTTT:::::___Ups glaube das mit dem Kosten += x habe ich mit Textbox verwchselt sorrry.

    Tim B. schrieb:

    Ich glaube also wen du bei den Kosten addieren willst dann machst du das meines wissen falsch weil:
    Wenn du Kosten += 2 und Kosten + = 8 hast z.b. dann hast du net 10 sondern 28
    Oder wolltest du das so ?
    Wenn du rechnen wolltest schau mal nach dem Befehl Val kann dir auch helfen wenn du willst.
    EIDTTT:::::___Ups glaube das mit dem Kosten += x habe ich mit Textbox verwchselt sorrry.



    In C ist das so das dann 2 & 8 = 28 ist allerdings in VB hab ichs getestet ist es 10. :D

    Aber ich verstehe trotzdem nicht warum das nicht funktioniert, denn ich gebe es ja auch in einem label aus und dort wird auch angezeigt beim beispiel 8 +2 = 10

    VB.NET-Quellcode

    1. Dim a As String = "2"
    2. Dim b As String = "100"
    3. If a <= b Then
    4. Debug.Print(a)
    5. Else
    6. Debug.Print(b)
    7. End If


    Ausgabe ist 100. Obwohl 2<=100 ist.
    Ein Verglich zweier Strings ist halt einfach anders als zweier Zahlen.
    Das ist meine Signatur und sie wird wunderbar sein!
    Sowas :

    VB.NET-Quellcode

    1. If item.Contains("Hund") Then Haustier = "Hund" End If
    2. If item.Contains("Katze") Then Haustier = "Katze" End If
    3. If item.Contains("Maus") Then Haustier = "Maus" End If
    4. If item.Contains("Ratte") Then Haustier = "Ratte" End If
    5. If item.Contains("Pferd") Then Haustier = "Pferd" End If


    Macht man doch mit Else If oder was hast du dir dabei gedacht ?(
    So ist das mal wieder, kein Strict On und dann wundern das nichts funktioniert. Einige Threads würden wegfallen wenn die Leute endlich mal mit richtigen Datentypen Programmieren und wenn sie das nicht kennen wenigstens Strict On stellen, dass die IDE drauf aufmerksam macht das String nicht in Integer Konvertiert werden kann oder sowas.

    Dann anstatt der Ifs auch keine ElseIfs nutzen sondern hier ist ein klassischer Fall für Select Case Anwendung.

    VB.NET-Quellcode

    1. Select Case ListBox1.SelectedItem.ToString()
    2. Case "Hund"
    3. ' kosten rechnen
    4. Case "Katze"
    5. ' kosten rechnen
    6. ' usw.
    7. End Select

    Sparrt jede menge Zeit, da nicht soviele Bedingungen geprüft werden müssen, sondern nach auftreten einer Case Anweisung wird die Select Anweisung verlassen und der normale Code geht weiter.