Wie kann ich mit einer For-Schleife Punkt vor Strich rechnen?

Hallo,

ich habe mir einen Taschenrechner (mit For-Schleife) erstellt.

Er kann alles, außer Punkt vor Strich. Die Funktion ist etwas schwieriger, da ich kein kein DataTable.Compute benutzen darf, sonst wäre es ja zu einfach.

Es muss durch den String selber erfolgen, also etwas komplizierter.

Hier der Code (kann leider nicht den ganzen Code eingeben, daher hier der = Code, der dafür ja auch am wichtigsten ist; ich füge den Rest einzeln hinzu!):

Dim input As String = tb.Text
Dim numbers() As String = input.Split({"+", "-", "*", "/"}, StringSplitOptions.RemoveEmptyEntries)
Dim operators() As String = Regex.Matches(input, "[-+*/]").OfType(Of Match).Select(Function(m) m.Value).ToArray()

For Each op As String In operators
  If op = "*" Then
    Console.WriteLine("Multiplication operator found!")
  ElseIf op = "/" Then
    Console.WriteLine("Division operator found!")
  ElseIf op = "+" Then
    Console.WriteLine("Addition operator found!")
  ElseIf op = "-" Then
    Console.WriteLine("Subtraction operator found!")
  End If
Next

If numbers.Length < 2 OrElse operators.Length < 1 Then
  Return ' Exit the method if we can't perform the calculation
End If

Dim result As Double = Double.Parse(numbers(0))

For i As Integer = 0 To operators.Length - 1
  Dim op As String = operators(i)
  Dim number As Double = Double.Parse(numbers(i + 1))

  Select Case op
    Case "+"
      result += number
      (das Gleiche mit -*/)
  End Select
Next

tb.Text = result.ToString()
Dim containsInvalidCharacters As Boolean = False

For i As Integer = tb.Text.Length - 1 To 0 Step -1
  If Not IsNumeric(tb.Text.Substring(i, 1)) And Not "+-*/".Contains(tb.Text.Substring(i, 1)) Then
    containsInvalidCharacters = True
    Exit For
  End If
Next

' Beibehaltene For-Schleife
For index As Integer = 1 To 2
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 12

For index As Integer = 3 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 321

For index As Integer = 4 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 4321

For index As Integer = 5 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 54321

For index As Integer = 6 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 654321

For index As Integer = 7 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 7654321

For index As Integer = 8 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 87654321

For index As Integer = 9 To 1 Step -1
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 987654321

For index As Integer = 0 To 0
  Debug.Write(index.ToString & "")
Next

Debug.WriteLine("") 'Output: 0

End Sub

Danke schon einmal!

Visual Basic, Windows Forms

Meistgelesene Fragen zum Thema Visual Basic