Guten Tag Liebe vb-paradise Community,
zurzeit mache ich meine Ausbildung als Fachinformatiker für Anwendungsentwicklung.
Meine Firma hat mich direkt ins kalte Wasser geschmissen, ich soll einen Konsolen-Taschenrechner in VBnet programmieren.
Ich habe vorher noch nie etwas mit VBnet gemacht.
Also habe ich mich drangesetzt und erstmal einen einfachen Taschenrechner entworfen, der die Grundrechenarten rechnen kann, aber lediglich mit zwei Zahlen rechnen kann.
Hier der Quelltext:
Mein Problem dabei ist aber, dass die Eingabe nur in einer Zeile erfolgen soll.
Also habe ich meinen Taschenrechner umgeschrieben. Ein Arbeitskollege meinte ich könnte den String dann in Listen zerlegen lassen.
Also habe ich zuerst eine Liste mit Operatoren erstellt, die ich zum splitten der Eingabe nutze, um nur die Zahlen aus der Eingabe zu bekommen.
Soweit so gut, das klappt und alle Zahlen sind nun in der Liste. Nun habe ich die Eingabe noch ein zweites mal gesplittet, aber nun mit den Zahlen aus der eben erstellten Liste.
Nun komme ich nicht weiter. Wie kann ich denn jetzt mit diesen beiden String-Listen rechnen?(Ich weiß mit Strings rechnet man nicht )
Code:
Ich hoffe das ist nicht völliger Blödsinn ist, den ich da produziert habe.
Habe mich durch viele Foren gearbeitet und versucht zu verstehen, wie man das ändern könnte, aber ich habe einfach nichts brauchbares für die Konsole gefunden.
Mir wurde auch die Compute() Methode gesagt, aber diese braucht ja eine Datatable. Verstehe da nocht nicht ganz wie das funktioniert.
Ich hoffe ihr seit jetzt nicht alzu genervt, da es bestimmt schon der 500. Taschenrechner ist, den ihr gesehen habt.
Hoffentlich könnt ihr mir behilflich sein.
mastermc
zurzeit mache ich meine Ausbildung als Fachinformatiker für Anwendungsentwicklung.
Meine Firma hat mich direkt ins kalte Wasser geschmissen, ich soll einen Konsolen-Taschenrechner in VBnet programmieren.
Ich habe vorher noch nie etwas mit VBnet gemacht.
Also habe ich mich drangesetzt und erstmal einen einfachen Taschenrechner entworfen, der die Grundrechenarten rechnen kann, aber lediglich mit zwei Zahlen rechnen kann.
Hier der Quelltext:
VB.NET-Quellcode
- Imports System.Threading
- Module Module1
- Sub Main()
- Console.WriteLine("---------------------------")
- Console.WriteLine("Taschenrechner V1.0")
- Console.WriteLine("---------------------------")
- Console.WriteLine("Die Operatoren sind: +, -, *, / und ^")
- Console.WriteLine("---------------------------")
- Dim xkey As New ConsoleKeyInfo()
- Do
- Dim z1 As Double
- Dim z2 As Integer
- Dim e1 As String
- Dim e2 As String
- Dim oper As String
- System.Console.WriteLine("Zahl 1: ")
- e1 = System.Console.ReadLine()
- If FormatNumber(e1) = True Then
- z1 = e1
- Else
- System.Console.WriteLine("Die Eingabe ist keine Ganzzahl!")
- End If
- System.Console.WriteLine("Eingabe1:" & z1)
- System.Console.WriteLine("Operator ")
- oper = Console.ReadLine()
- System.Console.WriteLine("Zahl 2: ")
- e2 = System.Console.ReadLine()
- If FormatNumber(e2) = True Then
- z2 = e2
- Else
- System.Console.WriteLine("Die Eingabe ist keine Ganzzahl!")
- End If
- Dim rechnung As Double
- Select Case oper
- Case "+"
- rechnung = z1 + z2
- Console.WriteLine(" = " & rechnung)
- Case "-"
- rechnung = z1 - z2
- Console.WriteLine(" = " & rechnung)
- Case "*"
- rechnung = z1 * z2
- Console.WriteLine(" = " & rechnung)
- Case "/"
- rechnung = z1 / z2
- Console.WriteLine(" = " & rechnung)
- Case Else
- Console.WriteLine("Falsche Eingabe!")
- End Select
- Console.WriteLine("Wollen Sie das Programm erneut rechen lassen? J/N")
- Do
- Wiederholung:
- Select Case Console.ReadLine
- Case "n"
- Exit Sub
- Case "N"
- Exit Sub
- Case "j"
- Exit Do
- Case "J"
- Exit Do
- Case Else
- Console.WriteLine("Ungültige Eingabe!")
- GoTo Wiederholung
- End Select
- Loop
- Loop
- End Sub
- End Module
Mein Problem dabei ist aber, dass die Eingabe nur in einer Zeile erfolgen soll.
Also habe ich meinen Taschenrechner umgeschrieben. Ein Arbeitskollege meinte ich könnte den String dann in Listen zerlegen lassen.
Also habe ich zuerst eine Liste mit Operatoren erstellt, die ich zum splitten der Eingabe nutze, um nur die Zahlen aus der Eingabe zu bekommen.
Soweit so gut, das klappt und alle Zahlen sind nun in der Liste. Nun habe ich die Eingabe noch ein zweites mal gesplittet, aber nun mit den Zahlen aus der eben erstellten Liste.
Nun komme ich nicht weiter. Wie kann ich denn jetzt mit diesen beiden String-Listen rechnen?(Ich weiß mit Strings rechnet man nicht )
Code:
VB.NET-Quellcode
- Module module1
- Sub Main()
- Console.WriteLine("---------------------------")
- Console.WriteLine("Taschenrechner V1.0")
- Console.WriteLine("---------------------------")
- Console.WriteLine("Die Operatoren sind: +, -, *, / und ^")
- Do
- Dim eingabe As String
- Dim operant As New List(Of String)
- operant.Add("+")
- operant.Add("-")
- operant.Add("/")
- operant.Add("*")
- operant.Add("^")
- operant.Add("(")
- operant.Add(")")
- Console.WriteLine(" ----------------------- ")
- 'Eingabe
- Console.WriteLine("Ihre Rechnung ")
- eingabe = Console.ReadLine
- Dim zahlen As List(Of Double) = New List(Of Double)(eingabe.Split(operant.ToArray(), StringSplitOptions.None))
- Dim operant2 As List(Of String) = New List(Of String)(eingabe.Split(zahlen.ToArray(), StringSplitOptions.RemoveEmptyEntries))
- Console.WriteLine("--")
- Dim zaehler As Integer = 0
- Dim value As List(Of Double) = New List(Of Double)
- 'While (laenge > zaehler)
- ' value.Add(Double.Parse(zahlen(zaehler)))
- ' zaehler += 1
- ' Console.WriteLine(zahlen)
- 'End While
- 'Hier wird die Berechnungen gemacht.
- Dim zwischenergebnis As Double
- 'Select Case operant2
- ' Case "+"
- ' zwischenergebnis = zahlen(0) + zahlen(1)
- ' Case "-"
- ' zwischenergebnis = zahlen(0) + zahlen(1)
- ' Case "/"
- ' zwischenergebnis = zahlen(0) + zahlen(1)
- ' Case "*"
- ' zwischenergebnis = zahlen(0) + zahlen(1)
- 'End Select
- Console.WriteLine("--------------")
- Console.WriteLine("Ergebnis: " & zwischenergebnis)
- Console.WriteLine("--------------")
- 'Wiederholung oder Abbruch des TR
- Console.WriteLine("Soll Wierderholt werden? J/N")
- Do
- Wiederholung:
- Select Case Console.ReadLine
- Case "n"
- Exit Sub
- Case "N"
- Exit Sub
- Case "j"
- Exit Do
- Case "J"
- Exit Do
- Case Else
- Console.WriteLine("Ungültige Eingabe!")
- GoTo Wiederholung
- End Select
- Loop
- Loop
- End Sub
- End Module
Ich hoffe das ist nicht völliger Blödsinn ist, den ich da produziert habe.
Habe mich durch viele Foren gearbeitet und versucht zu verstehen, wie man das ändern könnte, aber ich habe einfach nichts brauchbares für die Konsole gefunden.
Mir wurde auch die Compute() Methode gesagt, aber diese braucht ja eine Datatable. Verstehe da nocht nicht ganz wie das funktioniert.
Ich hoffe ihr seit jetzt nicht alzu genervt, da es bestimmt schon der 500. Taschenrechner ist, den ihr gesehen habt.
Hoffentlich könnt ihr mir behilflich sein.
mastermc