VB Die 4 Grundrechenarten

Hi Leute, da ich vor einem Monat erst mit meinem Fachinformatiker angefangen habe, bräuchte ich noch ein bissel Hilfe um einige sachen zu verstehen. Unser Lehrer hat uns gleich mal eine Aufgabe aufgebrummt wo keine sau aus der klasse versteht^^
Die Aufgabe lautet: Erstellen Sie ein Programm.Es kann in den 4 Grundrechenarten rechnen. Die oberen 4 aufrufe der Abbildung stellen korrekte Aufrufe da.
http://img4.fotos-hochladen.net/uplo…ezohmgf1xk.jpg
Hier mal mein Code dazu, aber er funktioniert leider nicht,

Imports Microsoft.VisualBasic
Imports System.Console
Module Rechnen
Dim Ergebnis As Single

Sub Main(Argumente() As String)

Dim Eingabe As String = „0“
Dim Argumente(2) As String

Dim op1, op2, Ergebnis As Single
Dim Oper As String
Dim Nochmal As Boolean = True

While Nochmal = True
Console.Write("Berechnen: ")
Eingabe = Console.ReadLine()

Argumente = Eingabe.Split
op1 = Argumente(1)
Oper = Argumente(0)
op2 = Argumente(2)
Select Case Oper
Case „+“
Ergebnis = op1 + op2
Console.WriteLine(" = " & Ergebnis)
Case „-“
Ergebnis = op1 - op2
Console.WriteLine(" = " & Ergebnis)
Case „*“
Ergebnis = op1 * op2
Console.WriteLine(" = " & Ergebnis)
Case „/“
Ergebnis = op1 - op2
Console.WriteLine(" = " & Ergebnis)
Case Else

End Select

End While
Wäre für jede Hilfe und für jeden fehler der mir gezeigt wird sehr dankbar :smile:

Hallo,

„funktioniert nicht“ ist keine hilfreiche Fehlerbeschreibung. Ich vermute aber mal, dass das Programm schon nicht kompiliert. Der Link zu dem Bild funktioniert übrigens nicht.

String.Split()

Diese Methode braucht mindestens einen Parameter. Nämlich das Zeichen oder der String, an dem die Zeichenkette geteilt werden soll. Je nachdem, wie deine Ausgabe aussieht, kann das z.B. ein „,“ sein. Also

Argumente = Eingabe.Split(","C)

Die Eingabe müsste dann bspw. so aussehen:

+,5,2

Du solltest dir auch angewöhnen, mit den richtigen Typen zu arbeiten und implizite Konvertierungen zu vermeiden. In dem Argumente-Array stehen drei Strings. op1 ist aber ein Single. Wenn du also sagst op1 = Argumente(1), dann konvertierst du den String implizit in einen Single. Das kann funktionieren, muss aber nicht. Schalte in den Projekteinstellungen Option Strict auf On, dann werden dir solche impliziten Konvertierungen als Fehler angezeigt.
Im Falle einer Konvertierung von String zu einer Zahl ist eine direkte Konvertierung auch nicht die beste Möglichkeit. Stattdessen sollte der String geparst werden:

op1 = Single.Parse(Argumente(1))

Für diese Methode gibt es noch eine Variante, die nicht gleich eine Exception wirft, wenn es nicht klappt. Nämlich TryParse. Diese gibt zurück, ob eine Zahl in dem String erkannt wurde und schreibt diese in den ByRef Parameter:

Dim erfolgreich = Single.TryParse(Argumente(1), op1)

In deinem Select-Block führst du für jeden Fall zum Schluss die gleiche Aktion aus. Stelle diese Aktion ans Ende des Blocks, dann hast du keinen duplizierten Code:

Select Case Oper
 Case "+": Ergebnis = op1 + op2
 Case "-": Ergebnis = op1 - op2
 Case "\*": Ergebnis = op1 \* op2
 Case "/": Ergebnis = op1 / op2
End Select
Console.WriteLine(" = " & Ergebnis)

Nico