C# - Verwendung der nicht Zugewiesenen Varianle "I"

Guten Tag liebe Community!

Ich muss das Programm bis morgen fertig haben und verstehe garnicht wo das Problem liegt. Bin noch Anfänger und habe auch das Problem geoogelt aber finde nichts das meiste ist in Englisch erklärt oder zu schwer erklärt was ich nicht verstehe!
Code:
namespace ü1042AFEL
{ // Malik Awan 24.11.2014 2AFEL
    class Program
    {
        static void Main(string[] args)
        {
            double R, U, I;
            Int16 Art;
            Console.WriteLine();
            Console.Write(" *** Ohmsches Gesetz *** ");
            Console.WriteLine("(1) Widerstand");
            Console.WriteLine("(2) Spannung");
            Console.WriteLine("(3) Strom");
            Console.WriteLine("(4) Abbruch ");
            Console.Write(" Welche Berechnung (Nr) wollen sie dürchführen?: ");
            Art = Convert.ToInt16(Console.ReadLine());
            
          
            switch (Art)
            {
                case 1: Console.WriteLine (" Geben sie die Spannung ein: ");
                    U= Convert.ToDouble (Console.ReadLine ());
                    if( U > 100000 )
                        Console.WriteLine (" Fehlermeldung ");
                    else 
                        Console.WriteLine (" Geben sie den Strom ein: ");
                    I= Convert.ToDouble (Console.ReadLine ());
                    if( I>100000 )
                        Console.WriteLine (" Fehlermeldung ");
                    R = U / I;
                    Console.WriteLine (" Der Widerstands Wert beträgt: "+R);
                    break;
                case 2:Console.WriteLine ("Geben sie den Widerstand ein:");
                   R= Convert.ToDouble (Console.ReadLine ());
                    if(R< 0 )
                        Console.WriteLine (" Fehlermeldung ");
                    else 
                        Console.WriteLine (" Geben sie den Strom ein: ");
                    I= Convert.ToDouble (Console.ReadLine ());
                    if( I>100000 )
                        Console.WriteLine (" Fehlermeldung ");
                    U = R * I;
                    Console.WriteLine (" Der Spannungswert beträgt: "+U);
                    break;
                 case 3:Console.WriteLine ("Geben sie den Widerstand ein:");
                      R= Convert.ToDouble (Console.ReadLine ());
                    if(R< 0 )
                        Console.WriteLine (" Fehlermeldung ");
                    else 
                        Console.WriteLine (" Geben sie die Spannung ein: ");
                    U= Convert.ToDouble (Console.ReadLine ());
                    if( U > 100000 )
                        Console.WriteLine (" Fehlermeldung ");
                    I = U / R;
                    Console.WriteLine(" Die Stromstärke beträgt: " + I);
                    break;
                case 4: Console.WriteLine (" Abbruch ");
                    break;
                default: Console.WriteLine(" Fehlermeldung ");
                    break;
            }
            Console.ReadLine();
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Direkt habe ich keinen Fehler gesehen und Mangels Compiler kann ich es auch jetzt nicht durchtesten.

Ich vermute dass dein Compiler dir die Fehlermeldung (ich Vermute der Thread-Titel soll die Fehlermeldung sein!?) sogar samt Zeilennummer angegeben hat.

Einfach in dieser Gegend suchen (Wichtig, ein Zeilennummer zu einem Fehler muss NICHT zwingend in der selben Zeile sein, ein paar Zeilen drüber/drunter (eher drüber) ist durchaus auch Normal).

Ansonsten wäre die genaue Fehlermeldung Hilfreich (wenn es denn nicht die im Thread-Titel ist). Die aus dem Thread-Titel ist ja schon relativ eindeutig, er will dir sagen dass du die Variable "I" aufrufst obwohl diese nicht definiert wurde.

gruß
Chris
 
Code:
// Änder mal
double R, U, I;
// zu
double R = 0.0, U = 0.0, I = 0.0;
// Dann hätte alles einen Wert vor Benutzung.
Abgesehen davon dividierst du bei R = U/I ggf durch Null.
 
Oder man definitiert die Variablen immer erst dann, wenn man sie benötigt. Es gibt in der Anwendung an und für sich keinen Grund den Scope der Variablen so weit heraus zu ziehen.

mfg benediktibk
 
Zurück
Oben