超急!明天就得交作业!菜鸟求助!请大神帮忙解决下这个异常

Lucifiere 2013-02-24 11:26:07
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无法处理,求大神指教啊!明天就得交作业急得很啊,求救!
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzw13999 2013-02-25
  • 打赏
  • 举报
回复
确实有点没心看啊。
threenewbee 2013-02-25
  • 打赏
  • 举报
回复
你把一个本来3、5行就能写成的功能写了这么乱七八糟的一大堆。特别地,你居然还在使用ArrayList这个过时的东西,而不得不夹杂大量的强制类型转换。就这些破烂,根本没有修改的价值。好好把C#学一学,然后从头再写!
撒哈拉的小猫 2013-02-24
  • 打赏
  • 举报
回复
你把那个异常报告放上来啊

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧