Variable nicht zugewiesen?

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

  • Variable nicht zugewiesen?

    Hey,
    kann mir jemand helfen?
    Angeblich ist die Variable ergebnis nicht zugewiesen.
    [cs]
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    string name;
    string rechenart;
    double zahl1;
    double zahl2;
    double ergebnis;

    Console.WriteLine();
    Console.WriteLine(" =============================================");
    Console.WriteLine(" F A M I L I E N R E C H N E R ");
    Console.WriteLine(" =============================================");

    Console.WriteLine();
    Console.WriteLine("===== Hallo, du da!\n===== Falls du zur Familie ********** gehörst,\n===== dann gib jetzt deinen Vornamen ein:\n");
    name = Console.ReadLine();
    Console.WriteLine();
    switch(name)
    {
    case "Jonas":
    Console.WriteLine("===== Hallo Jonas!\n===== Du bist 16 Jahre alt und bist Erfinder dieses Programms!");
    break;
    case "Stefan":
    Console.WriteLine("===== Hallo Stefan!\n===== Du bist 22 Jahre alt und spielst gerne Gitarre!");
    break;
    case "Katrin":
    Console.WriteLine("===== Hallo Katrin!\n===== Du bist 46 Jahre alt und liest gerne Bücher!");
    break;
    default:
    Console.WriteLine("===== Du gehörst leider nicht zu unserer Familie, {0}!\n===== Deshalb darfst du unseren Rechner nicht benutzen.", name);
    break;
    }
    if(name == "Jonas" || name == "Stefan" || name == "Katrin")
    {
    Console.WriteLine();
    Console.WriteLine("===== Wähle nun die ERSTE Zahl,\n===== mit der du rechnen möchtest, {0}!\n", name);
    zahl1 = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine();
    Console.WriteLine("===== Wähle nun die ZWEITE Zahl,\n===== mit der du rechnen möchtest, {0}!\n", name);
    zahl2 = Convert.ToDouble(Console.ReadLine());
    Console.WriteLine();
    Console.WriteLine("===== Wähle nun deine gewünschte RECHENART, {0}!\n", name);
    rechenart = Console.ReadLine();

    if (rechenart == "+")
    {
    ergebnis = zahl1 + zahl2;
    }
    else if (rechenart == "-")
    {
    ergebnis = zahl1 - zahl2;
    }
    else if (rechenart == "*" || rechenart == "x" || rechenart == "X")
    {
    ergebnis = zahl1 * zahl2;
    }
    else if (rechenart == "/" || rechenart == ":")
    {
    ergebnis = zahl1 / zahl2;
    }

    Console.WriteLine();
    Console.WriteLine("===== Das Ergebnis lautet {0}, {1}!", ergebnis, name);


    }
    else
    {
    Console.WriteLine();
    Console.WriteLine("===== Drücke eine beliebige Taste, um den Rechner zu beenden, {0}!", name);
    }
    Console.ReadKey();
    }
    }
    }[/cs]

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Adro ()

  • C# fordert immer einen initialisierungs Wert, den du nicht angegeben hast.

    so gibt es keine Probleme
    [cs]string name = null;
    string rechenart = null;
    double zahl1 = 0;
    double zahl2 = 0;
    double ergebnis = 0;[/cs]
    Der Grund warum er dir nur dort den fehler ausgibt, liegt an deiner if verschachtelung, für den man dir eigentlich den Kopf abreißen müsste.

    Wenn jetzt jemand eine andere "Rechenart" eintippt, als du davon ausgehst, würde ergebnis mit nichts gefüllt sein.
    Deswegen sollte man Variablen vorher initialisieren und nicht einfach hinklatschen, wie in deinem Fall.

    Dir fehlt ein "else", dass die Verwendung der nicht zugewiesenen Variablee "ergebnis" umgeht, oder du hast da eine Schleife rein die solange läuft bis der Nutzer entweder das Program schließt oder das richtige Rechenzeichen eintippt.

    break ist dein Freund ;)

    @TutNichts:
    Sprachvariablen fail? :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von BlackAce ()