/ *这是我的ontroller,数组对象必须转换为字符串类型,以便我可以执行我的操作
namespace taskmvc.Controllers { 公共类dogController:控制器 {
public ActionResult dog()
{
string[,] array = new string[7, 14]
{
{"D","G","O","O","D","D","O","D","G","O","O","D","D","O"},
{"O","D","O","O","G","G","G","D","O","D","G","O","G","G"},
{"O","G","O","G","D","O","O","D","G","O","O","D","D","D"},
{"D","G","D","O","O","O","G","G","O","O","G","D","G","O"},
{"O","G","D","G","O","G","D","G","O","G","G","O","G","D"},
{"D","D","D","G","D","D","O","D","O","O","G","D","O","O"},
{"O","D","G","O","G","G","D","O","O","G","G","O","O","D"}
};
ViewData["f"] = array;
return View(array);
}
}
}
/ *这是我的观点,你可以看到我的数组是一个字符串
@{
ViewBag.Title = "dog";
}
<h2>dog</h2>
@{
string [,] array = ViewData["f"];
int i, j;
var n = 7;
var m = 14;
}
@for (i = 0; i <n;i++)
{
for(j=0;j<m;j++)
{
if (array[i, j] == "D")
{
if (j + 1 < m && array[i, j + 1] == "O")//
{
if(j + 1 < m && array[i,j+1]=="G")
{
}
}
}
else if (i+1<n && j + 1 < m && array[i + 1, j + 1] == "O")
{
if (i + 1 < n && j + 1 < m && array[i + 1, j + 1] == "G")
{
}
}
else if (i - 1 >0 && array[i - 1, j] == "O")//
{
if (i - 1 > 0 && array[i - 1, j] == "G")
{
}
}
else if (j-1>0 && array[i, j - 1] == "O")
{
if (j - 1 > 0 && array[i, j - 1] == "G")
{
}
}
else if(i + 1< n && array[i +1, j ] == "O")
{
if (i + 1 < n && array[i + 1, j] == "G")
{
}
}
else if(i+1<n && j-1>0 && array[i+1,j-1]=="O")
{
if (i + 1 < n && j - 1 > 0 && array[i + 1, j - 1] == "G")
{
}
}
else if (i-1>0&&j-1>0&&array[i-1,j-1]=="O")
{
if (i - 1 > 0 && j - 1 > 0 && array[i - 1, j - 1] == "G")
{
}
}
else if(i-1>0&&j+1<m&&array[i-1,j+1]=="O")
{
if (i - 1 > 0 && j + 1 < m && array[i - 1, j + 1] == "G")
{
}
}
}
}
答案 0 :(得分:1)
j < 14
,因此max(j) = 13
,j+1 = 14
,array[i,j+1]
是非法的。
j + 1超出范围。
之前检查:
if(j+1 < 14 && array[i,j+1]=="G")
......还有很多其他地方。 另外,用变量替换7和14。例如:
var n = 7;
var m = 14;
if(j+1 < m && array[i,j+1]=="G")
答案 1 :(得分:0)
由于您正在检查数组[i + 1,j + 1],数组[i - 1,j],数组[i + 1,j-1],因此您应该使用以下循环:
for (i = 1; i <6i++)
{
for(j=1;j<13;j++)
{
...
答案 2 :(得分:0)
您正尝试访问数组[i,j + 1]
表示最后一个索引j = 13,j + 1表示“14” 所以你正在访问数组[i,14] 由于此内存位置未分配给您的阵列,因此您将获得索引超出范围的异常。
尝试从i = 0循环; J = 0;并避免像数组[i-1,j-1]这样的情况。 (边界条件)