0

Ich versuche das Array unten zu lesen. Was ich tun möchte, ist nur zu überprüfen, ob die Nummer 1 und 2 zur gleichen Zeit im Array existiert. Das Problem ist mit meiner Methode. Ich bekomme immer eine "Verwendung der nicht zugewiesenen lokalen Variable 'jogavel1'", das ist in meiner Methode. Kann mir jemand helfen oder erklären, was ich falsch mache? Vielen Dank für Ihre Teilnahme =).C# Multi-Dimensional Array Überprüfung

 int[,] tabuleiro = new int[8, 8] { 
      {1, 0, 1, 0, 1, 0, 1, 0}, 
      {0, 1, 0, 1, 0, 1, 0, 1}, 
      {1, 0, 1, 0, 1, 0, 1, 0}, 
      {0, 0, 0, 0, 0, 0, 0, 0}, 
      {0, 0, 0, 0, 0, 0, 0, 0}, 
      {0, 2, 0, 2, 0, 2, 0, 2}, 
      {2, 0, 2, 0, 2, 0, 2, 0}, 
      {0, 2, 0, 2, 0, 2, 0, 2}, 
     }; 

     int numero = verificar(tabuleiro); 

     Console.ReadKey(); 
    } 


    public static int verificar(int[,] tabuleiro) { 
     int jogavel, jogavel1, jogavel2 = 0; 
     for (int i = 0; i < 7; i++) { 
      for (int a = 0; a < 7; a++) { 
       if (tabuleiro[i, a] == 1) { 
        jogavel1++; 
       } 
       else if (tabuleiro[i, a] == 2) { 
        jogavel2++; 
       } 
      } 
     } 
     if (jogavel1 > 0 && jogavel2 > 0) { 
      jogavel = 1; 
     } 
     else 
      jogavel = 0; 
     return jogavel; 
    } 
} 

Antwort

2

Ihre Variable Instanziierung ist das Problem:

int jogavel, jogavel1, jogavel2 = 0; 

tut es dies führt zu nur jogavel2 mit einem Wert zugeordnet ist. Stattdessen sollten Sie sie wie folgt vergeben:

int jogavel; // in your case this variable doesn't necessarily needs to be assigned 
int jogavel1 = 0; 
int jogavel2 = 0; 

Erläuterung: Innerhalb Ihrer for-Schleife verwenden Sie jogavel1 und jogavel2 und erhöhen sie die ++ -Operator verwenden. Dies ist für nicht zugewiesene Variablen nicht möglich, was für jogavel1 gilt. Auf der anderen Seite muss jogavel nicht unbedingt ein Wert zugewiesen werden, da Sie ihn nicht für eine direkte Berechnung verwenden. Stattdessen weisen Sie ihm einfach einen Wert in Ihrer if-else-Anweisung zu, was für den Compiler in Ordnung ist.

Übrigens gibt es einen Fehler in Ihrer Logik: Innerhalb Ihrer Schleifen holen Sie nicht die letzten Elemente aus dem Array. Sie verwenden i < 7 resp. als Break-Bedingung, was nicht korrekt ist, da Ihr gezacktes Array 8 Elemente in jeder Dimension hat. So bearbeiten Sie es besser so:

... 
for (int i = 0; i < tabuleiro.GetLength(0); i++) // array-length of 1. dimension (=8) 
{ 
    for (int a = 0; a < tabuleiro.GetLength(1); a++) // len. of 2. dimension (=8) 
    ... 
+0

Dank so viel! Das habe ich erwartet! =) –

0

Lokale Variablen sind nicht initialisiert. Sie müssen sie manuell initialisieren.

So sollten Sie Code

int jogavel, jogavel1=0, jogavel2 = 0; 
Verwandte Themen