选很多人都会出错,包括2,3,5,6,7等。我看了一下代码并调试了一下,发现错误在函数boat.together()中
public bool togather(person p1,person p2)  //这两人在一起是否有冲突
{
bool result=true;
for(int i=0;i<p1.harm.Length;i++) //---错误
{
if(p1.harm[i]==p2.code)
{
result=false;
System.Console.WriteLine("{0}将会伤害{1}!",p1.name,p2.name);
break;
}
}
for(int i=0;i<p2.harm.Length;i++) //错误
{
if(p2.harm[i]==p1.code)
{
result=false;
System.Console.WriteLine("{0}将会伤害{1}!",p2.name,p1.name);
break;
}
}
if(result)
{
if(status==stop)
{
status=move;
}
}
return result;
}错误原因是当某个人不会伤害别人时,他的harm属性为null,从而导致p1.harm.Length出现异常。所以事先要判断p1.harm或者p2.harm是否为null。