Ich muss ein Programm schreiben, das den Unterschied zwischen den Summen der quadratischen Matrix Diagonalen für Hausaufgaben findet, aber mein Code löst IndexOutOFRange Ausnahme und ich habe keine Ahnung, wie Sie es beheben.diagonal Unterschied OutOfRange Ausnahme C#
Quellcode unter: // Eingang 3 11 2 4 4 5 6 10 8 -12 // gewünschte Ausgabe: 15
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class diagonalDifference
{
static void Main()
{
int N = Convert.ToInt16(Console.ReadLine());
int[,] arr = new int[N, N];
string str = string.Empty;
for (int i = 0; i < N; ++i)
{
string[] strArr = Console.ReadLine().Split(' ');
for (int j = 0; j < strArr.Length; ++j)
{
arr[i, j] = Convert.ToInt16(strArr[j]);
}
}
int left = 0, right = N - 1, ldTotal = 0, rdTotal = 0;
while (left <= right)
{
ldTotal += arr[left, left];
rdTotal += arr[left++, right];
}
Console.WriteLine(Math.Abs(ldTotal - rdTotal));
}
}
Auf welcher Codezeile erhalten Sie die Ausnahme? Sie können dies in der StackTrace-Eigenschaft der Ausnahme überprüfen, während Sie einen Debugger ausführen. –
Ich bekomme es auf: ldTotal + = arr [links, links]; –
Präsentierter Code sollte auf 'while (N> 0) ldTotal + = arr [links, links];' da es Endlosschleife ist stecken bleiben. Gibt es geschweifte Klammern? Auch die linke Variable wird niemals geändert. Bitte klären Sie den Code. –