none
IndexOutOfRangeException // Array fehler RRS feed

  • Frage

  • Mir wird dieser Fehler angezeigt kann mir vllt jemand sagen wie ich das korrigieren muss ?

    mfg Floland

    System.IndexOutOfRangeException wurde nicht behandelt.
      HResult=-2146233080
      Message=Der Index war außerhalb des Arraybereichs.
      Source=ConsoleApplication1
      StackTrace:
           bei ConsoleApplication2.Program.Main(String[] args) in c:\users\documents\visual studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs:Zeile 25.
           bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           bei System.Threading.ThreadHelper.ThreadStart()
      InnerException:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                int anzahl = 0;
                double summe = 0;
                Console.Write("Wie viele Werte wollen Sie eingeben? : ");
                anzahl = Convert.ToInt32(Console.ReadLine());
                double[] werte = new double[anzahl];
                
                Console.WriteLine("Bitte geben sie die Werte ein: ");
                int i;
                for (i = 1; i <= anzahl; i++)
                {
                    Console.Write("Tag {0} : ", i);
                    werte[i] = Convert.ToDouble(Console.ReadLine()); //laut Debugger Fehler in dieser Zeile
                    summe = werte[i] + summe;
                }
                Console.WriteLine("Summe : {0}", summe);
            }
        }
    }

    Dienstag, 12. März 2013 15:40

Antworten

  • Hallo Floland,

    in .NET sind Arrays im Standard nullbasiert, siehe Arrays (C#-Programmierhandbuch)

    Deswegen müsste Deine Schleife lauten:

      for (i = 0; i < anzahl; i++)
    Eine Schleifenvariable darf man - und wird man in der Regel - direkt in der for Anweisung definieren:
    // int i; entfällt, direkt in Schleife
    for (int i = 0; i < anzahl; i++)
    {
      // ...
    }

    Gruß Elmar

    Dienstag, 12. März 2013 17:04
    Beantworter

Alle Antworten