Benutzer mit den meisten Antworten
IndexOutOfRangeException // Array fehler

Frage
-
Mir wird dieser Fehler angezeigt kann mir vllt jemand sagen wie ich das korrigieren muss ?
mfg FlolandSystem.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); } } }
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
- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 12. März 2013 18:35
- Als Antwort markiert Ionut DumaModerator Dienstag, 19. März 2013 14:20
Alle Antworten
-
Hallo,
Arrays beginnen bei 0 an zu zählen. Entsprechend ibt es bei einem Array mit 10 Elementen, das 10. Element nicht, dafür aber ein 0. Deine for-Schleife müsset so aussehen:
for (i = 0; i < anzahl; i++)
Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets -
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
- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 12. März 2013 18:35
- Als Antwort markiert Ionut DumaModerator Dienstag, 19. März 2013 14:20
-
Hi,
zeig doch mal bitte den geänderten Code.
Ich tippe mal darauf, dass Du noch i <= Anzahl und eben nicht i < Anzahl im Code stehen hast.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 12. März 2013 18:35