Entwickler-Ecke

Basistechnologien - Erster Rechner


krampus - Mo 29.09.08 20:58
Titel: Erster Rechner
hi, ich hab mir heute einen rechner programmiert, der einfach nur 2 zahlen addieren soll.
doch das problem ist, dass das ergebnis falsch ist! und wenn ich statt ner zahl nen buchstabe eingebe kommt trotzdem ein ergebnis O.o

wenn ich mit der "int"-funktion einen 1er eingebe, den speichern lasse und dann wiedergeben lasse, kommt 49 dabei raus O.o
ich bitte um hilfe und hinweiße wie ich das ändern kann, dass die rechnungen stimmen!

der code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int zahl1;
            int zahl2;
            int erg;
            Console.WriteLine("Rechner");
            Console.WriteLine("**********************");
            Console.Write("Gib eine Zahl ein: ");
            zahl1 = Console.Read();
            Console.ReadLine();
            Console.WriteLine("");
            Console.Write("Gib noch eine Zahl ein: ");
            zahl2 = Console.Read();
            Console.ReadLine();
            Console.WriteLine("");
            erg = zahl1 + zahl2;
            Console.Write("Das ergebnis lautet: ");
            Console.WriteLine(erg);
            Console.ReadLine();
        }
    }
}



mfg krampus ;)

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Kha - Mo 29.09.08 21:22

:welcome:
Read liest nur ein einzelnes Zeichen und gibt dir dessen Unicode-Wert zurück. Versuch es lieber mal mit ReadLine (-> String) in Verbindung mit int.(Try)Parse ;) .


krampus - Mo 29.09.08 21:27

also soll ich oben zb "int.TryParse zahl1;" eingeben?
ich kenne mich noch nicht so gut aus, da ich ein anfänger bin...
und wenn ich statt dem read wo er die eingabe lesen soll readline eingebe, dann kommt folgende meldung wenn ich die maus drüber halte: "Eine implizierte Konvertierung vom Typ "string" in "int" ist nicht möglich."


Flitzs - Mo 29.09.08 21:41

Hey,
Wenn du dir mal die Parameter ansiehst die die Funktion Int.TryParse() benötigt, siehst du das zahl1 wohl nicht ganz passt.

int int.Parse(string s) wäre wohl eher passend
bool int.TryParse(string s, out in result) kannst du benützen wenn du nicht sicher bist ob s auch wircklich ein int ist.

Da beide Methoden sind werden diese so aufgerufen: int.Parse(Eingabe); und nicht int.Parse Eingabe;

Zitat:
und wenn ich statt dem read wo er die eingabe lesen soll readline eingebe, dann kommt folgende meldung wenn ich die maus drüber halte: "Eine implizierte Konvertierung vom Typ "string" in "int" ist nicht möglich.


Das liegt daran das Read() dir den Unicode-Wert (also auch ein int) eines Zeichens (der nicht z.B. bei dem Zeichen "2" auch wirklich 2 ist) zurückgibt aber eben nur ein Zeichen du willst aber die ganze Zahl und nicht nur ein Zeichen (Drum funktioniert das auch wenn du einen Buchstaben eingibst, da diese auch einen int-Unicodewert haben).

Versuchs einfach mit ReadLine() und int.Parse() / int.TryParse().

mfg Flitzs


krampus - Mo 29.09.08 21:54

oh mann ich blick das einfach nicht das is mir fürn anfang noch zu hoch...
könntest du mir das bitte mal an meinem quellcode zeigen?
ich habs schon versucht, aber ich schaffs einfach nicht!

mfg krampus


Flitzs - Mo 29.09.08 22:24

Hey, auch wenn es nicht üblich ist Quellcode zu posten:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
string zahl1;
            string zahl2;
            int erg;
            Console.WriteLine("Rechner");
            Console.WriteLine("**********************");
            Console.Write("Gib eine Zahl ein: ");
            zahl1 = Console.ReadLine();            
            Console.WriteLine("");
            Console.Write("Gib noch eine Zahl ein: ");
            zahl2 = Console.ReadLine();            
            Console.WriteLine("");
            erg = int.Parse(zahl1) + int.Parse(zahl2);
            Console.Write("Das ergebnis lautet: ");
            Console.WriteLine(erg);
            Console.ReadLine();


Allerdings empfehler ich dir, lieber (nochmal) die Grundlagen zu c# durchzugehen (z.B. in so nen Openbook (z.B. das hier http://www.galileocomputing.de/openbook/visual_csharp/ )).

mfg Flitzs