超急!明天就得交作业!菜鸟求助!请大神帮忙解决下这个异常
public class Judgement
{
public static bool isOnSameLine(ArrayList positionarraylistR, ArrayList positionarraylistB)
{
try
{
ArrayList CombineArraylistContainer = new ArrayList();
foreach (int i in positionarraylistR)
CombineArraylistContainer.Add(positionarraylistR[i]);
foreach (int i in positionarraylistB)
CombineArraylistContainer.Add(positionarraylistB[i]);
bool tag = true;
for (int i = 0; i < CombineArraylistContainer.Count; i++)
{
for (int j = i + 1; j < CombineArraylistContainer.Count; j++)
{
for (int k = j + 1; k < CombineArraylistContainer.Count; k++)
{
double z = (((double[])(CombineArraylistContainer[k]))[2] - ((double[])(CombineArraylistContainer[i]))[2]) * (((double[])(CombineArraylistContainer[k]))[1] - ((double[])(CombineArraylistContainer[j]))[1]) -
(((double[])(CombineArraylistContainer[k]))[2] - ((double[])(CombineArraylistContainer[j]))[2]) * (((double[])(CombineArraylistContainer[k]))[1] - ((double[])(CombineArraylistContainer[i]))[1]);
if (z == 0)
tag = false;
}
}
}
return tag;
}
catch (InvalidCastException)
{
MessageBox.Show("您输入的数据不符合要求", "提示");
return false;
}
}
public int[,] matchResult(ArrayList positionarraylistR, ArrayList positionarraylistB)
{
int[,] number = new int[Frm_Main.personNumber,2];
for(int i = 0;i < positionarraylistR.Count;i ++)
{
for (int j = i; j < positionarraylistR.Count; j++)
{
int redJudgeCondition = 0;
int blueJudgeCondition = 0;
for (int k = 0; k < positionarraylistR.Count; k++)
{
double r2 = (((double[])(positionarraylistR[k]))[2] - ((double[])(positionarraylistR[i]))[2]) * (((double[])(positionarraylistR[k]))[1] - ((double[])(positionarraylistB[j]))[1]) -
(((double[])(positionarraylistB[k]))[2] - ((double[])(positionarraylistR[j]))[2]) * (((double[])(positionarraylistR[k]))[1] - ((double[])(positionarraylistR[i]))[1]);
double b2 = (((double[])(positionarraylistB[k]))[2] - ((double[])(positionarraylistR[i]))[2]) * (((double[])(positionarraylistB[k]))[1] - ((double[])(positionarraylistR[j]))[1]) -
(((double[])(positionarraylistB[k]))[2] - ((double[])(positionarraylistR[j]))[2]) * (((double[])(positionarraylistB[k]))[1] - ((double[])(positionarraylistR[i]))[1]);
if(r2 > 0)
redJudgeCondition++;
if(b2 > 0)
blueJudgeCondition++;
}
if (redJudgeCondition == blueJudgeCondition)
{
double[] temp = new double[3];
temp = (double[])positionarraylistB[i];
positionarraylistB[i] = positionarraylistB[j];
positionarraylistB[j] = temp;
}
}
}
for (int i = 0; i < positionarraylistR.Count; i++)
{
number[i,0] = i;
number[i, 1] = ((int[])(positionarraylistB[i]))[0];
}
return number;
}
这个类里面的函数,算法是对的,但是各个强制转换出问题了,InvalidCastException无法处理,求大神指教啊!明天就得交作业急得很啊,求救!