Blutiger Anfänger in C#

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Blutiger Anfänger in C#

      Blutiger Anfänger in C#
      Hallo Leute, ich hab mal eine Frage: Ich häng gerade bei einer Aufgabe bei der ich einen ganz ganz simplen "Taschenrechner" programmieren soll.
      Ich hatte erst eine Stunde programmieren deshalb kenn ich mich noch nicht wirklich aus. Wäre nett wenn ihr es anfängerfreundlich erklären könntet was ich falsch gemacht hab.

      Fehler: Verwendung der nicht zugewiesenen lokalen Variable "ergebnis".

      Quellcode

      1. static void Main(string[] args)
      2. {
      3. int zahl1 = Convert.ToInt32(Console.ReadLine());
      4. int zahl2 = Convert.ToInt32(Console.ReadLine());
      5. string Rechenart = Console.ReadLine();
      6. int ergebnis;
      7. if (Rechenart == "+")
      8. {
      9. ergebnis = zahl1+zahl2;
      10. Console.WriteLine(ergebnis);
      11. }
      12. else if (Rechenart == "-")
      13. {
      14. ergebnis = zahl1-zahl2;
      15. Console.WriteLine(ergebnis);
      16. }
      17. else
      18. {
      19. Console.WriteLine("Die Rechenart ist unbekannt");
      20. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von libiza ()

      einfach am Anfang

      Quellcode

      1. int ergebnis = 0;
      und das wars.
      Edit: soweit ich das weiß, initialisiert C# Variablen nicht, heißt also, dass du für jede deklarierte Variable entweder den Operator new oder einen Standardwert zuweisen musst:

      msdn.microsoft.com/de-de/library/fa0ab757(v=vs.90).aspx

      Bzw.: msdn.microsoft.com/de-de/library/83fhsxwc(v=vs.90).aspx
      Bedenken Sie, dass die Verwendung nicht initialisierter Variablen in C# unzulässig ist.
      Danke, ich habs grad nocheinmal mit int ergebnis; durchlaufen lassen und es hat auch geklappt...

      Kannst du mir vielleicht erklären warum ich int ergebnis= 0 schreiben sollte? Hab das nicht ganz verstanden

      Edit: Okay, vielen dank hab dein edit zu spät gelesen ;)
      Hey ho,

      libiza schrieb:


      Quellcode

      1. if (Rechenart == "+")



      ich empfehle dir fürs Vergleichen von Strings die .Equals Methode, da wenn man diesem Thread Glauben schenken darf das "==" nur auf Objektgleichheit prüft.

      Demnach würde dein Code ungefähr so aussehen:

      Quellcode

      1. if (Rechenart.Equals("+"))


      Korrigiert mich, wenn ich da falsch liege.

      MfG DaS kiDDy
      Hallo,
      wäre jemand gewillt mir kurz zu erklären wie ich alle dreistelligen zahlen von 100-999 die sich durch ihre Ziffern teilen lassen ausgeben kann?
      Bsp: 126, lässt sich durch 1 2 und 6 teilen.

      Spoiler anzeigen

      Quellcode

      1. int i = 100;
      2. int h,z,e;
      3. h = i / 100;
      4. z = (i / 10) % 10;
      5. e = i % 10;
      6. if (z != 0 && e != 0 && i % h == 0 && i % z == 0 && i % e == 0)
      7. Console.WriteLine(i);

      Vielen dank ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von libiza ()

      Erstelle dir ein eindimensionales Array, indem du per String-Splitt-Methode, die einzelnen Chars reinpackst. Nun teilst du die ursprüngliche Zahl durch jeden Char (zahl im Array), kommt eine grade Zahl raus ist es teilbar.

      Beispiel:
      int Ausgangszahl = 134;
      int Chars Array();
      Chars = String.Split(134,1);
      int Ergebnis = Ausgangszahl / Chars[0];
      //Hier prüfen ob es KEINE Kommazahl ist
      if (Ergebnis == Kein Komma)
      Console.Writeline ("Teilbar");
      else
      Console.Writeline("Nicht teilbar");



      Ist natürlich nur eine Skizze..
      „Alle Menschen sind klug - die einen vorher, die anderen nachher.“

      Voltaire

      javaest schrieb:

      Erstelle dir ein eindimensionales Array, indem du per String-Splitt-Methode, die einzelnen Chars reinpackst. Nun teilst du die ursprüngliche Zahl durch jeden Char (zahl im Array), kommt eine grade Zahl raus ist es teilbar.

      Beispiel:
      int Ausgangszahl = 134;
      int Chars Array();
      Chars = String.Split(134,1);
      int Ergebnis = Ausgangszahl / Chars[0];
      //Hier prüfen ob es KEINE Kommazahl ist
      if (Ergebnis == Kein Komma)
      Console.Writeline ("Teilbar");
      else
      Console.Writeline("Nicht teilbar");



      Ist natürlich nur eine Skizze..


      Sein Quellcode steht doch schon dort...
      Einfach eine For-Schleife durchlaufen lassen. In dieser Schleife setzt du dort eine Variable int i auf 100 und tust bei jedem durchlauf dann diese Variable um 1 erhöhen.

      Quellcode

      1. int h, z, e;
      2. //Hier < 1000 (kleiner 1000), weil wir ja 1000 nicht dabei haben wollen. Du könntest auch <= 999 sagen (kleiner gleich 999)
      3. for (int i = 100; i < 1000; i++)
      4. {
      5. h = i / 100;
      6. z = (i / 10) % 10;
      7. e = i % 10;
      8. if (z != 0 && e != 0 && i % h == 0 && i % z == 0 && i % e == 0)
      9. Console.WriteLine(i);
      10. }
      Alles anzeigen


      Somit werden alle Zahlen ausgegeben, die durch die einzelnen Zahlen teilbar sind:



      Einführung von Schleifen siehst du ab hier: youtube.com/watch?v=HoxHRQrmJSM
      Vielen Dank fff619,
      ich hatte das mal mit einer for-schleife probiert, jedoch hab ich sie an die falsche Stelle gesetzt (direkt vor das if)

      Aber jetzt ist es mir klar geworden warum das nicht funktioniert, denn die ganzen Operationen oben müssen eine vorgegebene variable i haben, richtig?

      Auch danke an dich javaest, hab morgen programmier-vorlesung und da bekommen wir erst arrays.