OutOfRange Fehler
-
Hallo,
ich bin relativ neu in C# und habe das Problem das ich bei meiner Methode "Calc" immer ein OutOfRange Fehler kriege. Könnte mir jemand helfen oder erklären wie ich das umgehen kann?using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test1 { class Program { static void GetEquation(uint numberEquation, ref double[,] equationArrayNumbers) { string stringBuffer = ""; //Gleichung zwischenspeichern int mainCounter = 0; string[] stringCache; for (uint firstIntegerCounter = 0; firstIntegerCounter != numberEquation; firstIntegerCounter++) //Einlesen der Gleichungen { Console.Write("Geben sie eine Gleichung ein (geordnet mit Nullen): "); //Erfragen der Gleichung stringBuffer = Console.ReadLine(); //Abfragen der Gleichung Console.WriteLine("Gleichung wird verarbeitet..."); stringBuffer = stringBuffer.ToUpper(); stringBuffer = stringBuffer.Replace(" ", String.Empty); stringBuffer = stringBuffer.Replace("-", "+-"); stringCache = stringBuffer.Split(new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '+', '/', '*', '=' }); foreach (string foreachString in stringCache) { if (foreachString != "") { equationArrayNumbers[firstIntegerCounter, mainCounter] = Convert.ToDouble(foreachString); ++mainCounter; } } mainCounter = 0; Console.WriteLine(); //Neue Abfrage } } static void ShowArrayDouble(uint maxRow, uint maxColumn, double[,] doubleArray, bool mode) { if (mode == true) { Console.Clear(); } else { Console.WriteLine(); } for (uint columnCounter = 0; columnCounter != maxColumn; columnCounter++) { for (int rowCounter = 0; rowCounter != maxRow - 1; rowCounter++) { if (doubleArray[columnCounter, rowCounter] < 1) { Console.Write("FFF "); } else if (doubleArray[columnCounter, rowCounter] < 10) { Console.Write(doubleArray[columnCounter, rowCounter] + "FF "); } else if (doubleArray[columnCounter, rowCounter] < 100) { Console.Write(doubleArray[columnCounter, rowCounter] + "F "); } else { Console.Write(doubleArray[columnCounter, rowCounter] + " "); } } Console.WriteLine(); } } static void Calc(ref double[,] doubleArray, uint numberEquation) { for (int first = 0; 1 < numberEquation - 1; first++) { for (int second = 0; first + 1 < numberEquation; second++) { doubleArray[first, second] = doubleArray[first, second] / doubleArray[first, first]; for (int third = 0; third < numberEquation; third++) { doubleArray[second, third] = doubleArray[second, third] - doubleArray[second, first] * doubleArray[first, third]; } } } } static void Main(string[] args) { //Variablen erstellen uint numberEquation = 0; //Anzahl an Gleichungen uint numberCharacters = 0; //Anzahl an Buchstaben //Hauptcode Console.Write("Wie viele Gleichungen sollen eingegeben werden?: "); //Erfragen der Anzahl der Gleichungen numberEquation = Convert.ToUInt32(Console.ReadLine()); //Abfragen und konvertieren double[,] equationArray = new double[numberEquation, numberCharacters]; //Array um die Zahlen zu speichern GetEquation(numberEquation, ref equationArray); //Abfrage der Gleichungen starten Console.WriteLine(); //Abfrage beendet ShowArrayDouble(27, numberEquation, equationArray, false); Calc(ref equationArray, numberEquation); ShowArrayDouble(27, numberEquation, equationArray, false); //Ende while (true) { } //Fenster aufhalten } } }
-
Hallo,
welchen Wert hat denn "numberCharacters" wenn du das Array initialisierst? Das sollte dein Problem lösen, wenn du das korrigierst.
-
Ein Problem sollten auch die kaputten Schleifen in der Calc Methode sein...
-
Ich hab die Schleifen jetzt verändert:
static void Calc(ref double[,] doubleArray, uint numberEquation) { for (uint first = 0; first != numberEquation - 1; first++) { for (uint second = 0; first + 1 != numberEquation; second++) { doubleArray[second, first] = doubleArray[second, first] / doubleArray[first, first]; for (uint third = 0; first != numberEquation; third++) { doubleArray[second, third] = doubleArray[second, third] - doubleArray[second, first] * doubleArray[first, third]; } } } }
und "numberCharacters" wird mit je nach Gleichung initialisierst. Bei
4x+9y-7w=20
z.B. würde sie mit 4 (da 4 Zahlen) initialisierst werden. Hab den Code gestern aus versehen raus geschnitten. Trotzdem kriege ich einen Fehler in der 3. for-Schleife und "third" ist auch größer als "numberEquation".
-
Schleife zwei und drei sind immer noch Endlosschleifen.