Problem beim einlesen von double Werten in Visual Basic 2008



  • Hallo, ich hab ein Problem. Ist bestimmt ziemlich einfach, aber ich komme nicht weiter.
    Ich will ein Taschenrechner Programm schreiben. Auszug aus dem Programm ist unten.
    Warum kann ich denn nicht beim Einlesen ReadLine() schreiben?
    Ist die Konvertierung Convert.ToDouble... nötig? Kann man in .Net keine double Werte einlesen ohne das man eine Konvertierung tätigem muss, so wie dies in C++ mit cin auch ganz einfach funktioniert?
    Und bei der Eingabe von z.B 1+1 lautet das Ergebnis 98.

    Ich hoffe mir kann jemand schnellstmöglich weiter helfen.

    'Variablendeklaration
    Dim e_o, z_o As Double
    Dim operatorsymbol As Char

    Console.WriteLine("Taetigen Sie nun ihre Eingabe:")
    e_o = Convert.ToDouble(Console.Read())
    operatorsymbol = Convert.ToChar(Console.Read())
    z_o = Convert.ToDouble(Console.Read())

    Select Case operatorsymbol
    Case "+"
    Console.WriteLine("Das Ergebnis der Addition lautet {0}", e_o + z_o)
    Case "-"
    Console.WriteLine("Das Ergebnis der Addition lautet {0}", e_o - z_o)
    Case "*"
    Console.WriteLine("Das Ergebnis der Addition lautet {0}", e_o * z_o)
    End Select
    Console.ReadLine()



  • Was du im Moment machst, entspricht

    char c;
    cin >> c;
    double e_o = c;
    

    Dabei bekommen e_o und z_o die ASCII-Werte von '1'. Dann ist e_o + z_o = '1' + '1' = 49 + 49 = 98.

    Lies per readline in einen string bzw.

    Double.Parse(Console.ReadLine())
    


  • Michael E. schrieb:

    Was du im Moment machst, entspricht

    char c;
    cin >> c;
    double e_o = c;
    

    Dabei bekommen e_o und z_o die ASCII-Werte von '1'. Dann ist e_o + z_o = '1' + '1' = 49 + 49 = 98.

    Lies per readline in einen string bzw.

    Double.Parse(Console.ReadLine())
    

    Das bedeutet, daß ich einen double Wert einlese und in einem String speichere. Anschliessend wandele ich den String in einen double Wert um. Ist dies richtig.
    Kann man denn in .Net einen double Wert nicht ganz normal einelesen und ohne Konvertierung weiter bearbeiten?



  • Matzi schrieb:

    Michael E. schrieb:

    Was du im Moment machst, entspricht

    char c;
    cin >> c;
    double e_o = c;
    

    Dabei bekommen e_o und z_o die ASCII-Werte von '1'. Dann ist e_o + z_o = '1' + '1' = 49 + 49 = 98.

    Lies per readline in einen string bzw.

    Double.Parse(Console.ReadLine())
    

    Das bedeutet, daß ich einen double Wert einlese und in einem String speichere. Anschliessend wandele ich den String in einen double Wert um. Ist dies richtig.
    Kann man denn in .Net einen double Wert nicht ganz normal einelesen und ohne Konvertierung weiter bearbeiten?

    Was verstehst du unter "normal einlesen"? Eine Usereingabe ist nun mal ein String. In C++ wird das nur ein wenig vor dir versteckt mit

    double d;
    cin >> d;
    

    Ist das hier denn soviel umständlicher?

    double d = Double.Parse(Console.ReadLine())
    

Log in to reply