c#多维阵列验证

c#多维阵列验证,c#,arrays,multidimensional-array,methods,unassigned-variable,C#,Arrays,Multidimensional Array,Methods,Unassigned Variable,我正在尝试读取下面的数组。我要做的只是验证数组中是否同时存在数字1和2。问题在于我的方法。我不断得到一个“使用未分配的局部变量‘jogavel1’”,这是在我的方法中。有人能帮助或解释我做错了什么吗?非常感谢您的参与=) int[,]tabuleiro=新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

我正在尝试读取下面的数组。我要做的只是验证数组中是否同时存在数字1和2。问题在于我的方法。我不断得到一个“使用未分配的局部变量‘jogavel1’”,这是在我的方法中。有人能帮助或解释我做错了什么吗?非常感谢您的参与=)

int[,]tabuleiro=新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=验证车(tabuleiro);
Console.ReadKey();
}
公共静态int验证车(int[,]tabuleiro){
int jogavel,jogavel1,jogavel2=0;
对于(int i=0;i<7;i++){
对于(int a=0;a<7;a++){
if(tabuleiro[i,a]==1){
jogavel1++;
}
else if(tabuleiro[i,a]==2){
jogavel2++;
}
}
}
如果(jogavel1>0&&jogavel2>0){
jogavel=1;
}
其他的
jogavel=0;
返回jogavel;
}
}

变量实例化就是问题所在:

int jogavel, jogavel1, jogavel2 = 0;
这样做只会使
jogavel2
被赋值。 相反,您应该这样分配它们:

int jogavel; // in your case this variable doesn't necessarily needs to be assigned
int jogavel1 = 0;
int jogavel2 = 0;
...
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)
    ...
说明: 在for循环中,使用
jogavel1
jogavel2
并使用
++
-运算符递增它们。这对于未赋值变量是不可能的,它适用于
jogavel1
。另一方面,
jogavel
不一定需要指定一个值,因为您不需要将其用于直接计算。相反,您只需在if-else语句中为它赋值,这对编译器来说很好

顺便说一下,您的逻辑中有一个错误:在循环中,您没有从数组中获取最后的元素。您使用
i<7
resp
a<7
作为中断条件,这是不正确的,因为锯齿数组在每个维度中有8个元素。所以你最好这样编辑它:

int jogavel; // in your case this variable doesn't necessarily needs to be assigned
int jogavel1 = 0;
int jogavel2 = 0;
...
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)
    ...
。。。
for(int i=0;i
变量实例化就是问题所在:

int jogavel, jogavel1, jogavel2 = 0;
这样做只会使
jogavel2
被赋值。 相反,您应该这样分配它们:

int jogavel; // in your case this variable doesn't necessarily needs to be assigned
int jogavel1 = 0;
int jogavel2 = 0;
...
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)
    ...
说明: 在for循环中,您使用
jogavel1
jogavel2
并使用
++
-运算符对其进行递增。这对于未赋值变量是不可能的,这适用于
jogavel1
。另一方面,
jogavel1
不一定需要为其赋值,因为您不需要将其用于直接计算相反,您只需在if-else语句中为它赋值,这对编译器来说很好

顺便说一句,您的逻辑中有一个错误:在循环中,您没有从数组中获取最后的元素。您使用
i<7
resp.
a<7
作为中断条件,这是不正确的,因为您的锯齿状数组在每个维度中有8个元素。因此,您最好这样编辑它:

int jogavel; // in your case this variable doesn't necessarily needs to be assigned
int jogavel1 = 0;
int jogavel2 = 0;
...
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)
    ...
。。。
for(int i=0;i
局部变量未初始化。您必须手动初始化它们

所以你的代码应该是

int jogavel, jogavel1=0, jogavel2 = 0;

局部变量未初始化。您必须手动初始化它们

所以你的代码应该是

int jogavel, jogavel1=0, jogavel2 = 0;

非常感谢!这就是我所期待的!=)非常感谢!这就是我所期待的!=)