首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

arraylist数组参数设置有关问题,求解,

2012-09-05 
arraylist数组参数设置问题,求解,急……问题:把二维数组每一列编号存储在arrayLianHao中,当每一列元素“1”的

arraylist数组参数设置问题,求解,急……
问题:
把二维数组每一列编号存储在arrayLianHao中,当每一列元素“1”的个数少于2时,删除此列,并删除arrayLianHao中对应编号。然后二维数组每一列两两作“与”运算,arrayLianHao中对应元素连接,如:二维数组第一列与第二列作“与”运算,则arrayLianHao中第一列和第二列编号连接,成为“01”,依次类推,形成新数组。
代码错误(红色部分):
未处理 ArgumentOutOfRangeException
索引超出范围。必须为非负值并小于集合大小。参数名:index



  class Program
  {
  static void Main(string[] args)
  {
  ArrayList arrayLianHao = new ArrayList();
  string []number1 = { "0", "1", "2", "3", "4", "5" };
  arrayLianHao.AddRange(number1);
  int[,] arrayYuanShi = {{0,0,0,0,0,0},{0,1,0,1,0,0},{1,0,1,0,1,0},{1,1,1,0,1,0},{0,0,1,0,1,0}};
  bool Flag; int k; k = arrayYuanShi.GetLength(1); ArrayList arrayLianHao1 = new ArrayList();
  do
  {
  int countPD = 0;  
  int[]arrayPD = PanDuan(arrayYuanShi,k,arrayLianHao);
  for(int i = 0;i<arrayPD.Length;i++){countPD ++;}
  if (countPD == 0) { break;}
   
  Console.WriteLine(arrayYuanShi.GetLength(1));
  Console.ReadLine();  
  int[,]arrayXJZ = XinJuZhen(arrayYuanShi,arrayPD , k);
   
  for(int m = 0;m< arrayXJZ.GetLength(0);m++)
  {
  for(int n = 0;n<arrayXJZ.GetLength(1);n++)
  {Console.Write(arrayXJZ[m,n]);}
  Console.WriteLine();
  }
  Console.ReadLine();
  k = arrayYuanShi.GetLength(1) - countPD;  
  int [,] arrayYCZ = YuCaoZuo( arrayXJZ,countPD,k,arrayLianHao,arrayLianHao1);
  for(int b = 0;b<5;b++)
  {
  for(int c = 0;c<k*(k-1)/2;c++ )
  {Console.Write(arrayYCZ[b,c]);}
  Console.WriteLine();
  }  
  Console.ReadLine();

  for (int i = 0; i < 5; i++)
  for (int j = 0; j < 6; j++)
  {
  arrayYuanShi[i, j] = 0;
  arrayYuanShi[i, j] = arrayYCZ[i, j];
  }
  arrayLianHao.Clear();
for (int x= 0; x < k * (k - 1) / 2; x++)
arrayLianHao.Add(arrayLianHao1[x]);[b][/b] k = k * (k - 1) / 2;
  if (countPD == 0) Flag = false;
  else Flag = true;  
  }while(Flag);

  for (int i = 0; i < arrayLianHao.Count; i++)
  { Console.WriteLine(arrayLianHao[i]); }
  Console.ReadLine();
  Console.WriteLine("ok!");
  Console.ReadLine();
  }  
   
  public static int[] PanDuan(int[,] arrayYuanShi,int k,ArrayList arrayLianHao) 
  {
  int count = 0;
  for(int j = 0;j < k;j++)
  {
  count = 0;
  for(int i = 1;i<arrayYuanShi.GetLength(0);i++)
  {
  if(arrayYuanShi[i,j]==1) {count++;}
  else continue;
  }


  if(count < 2) {arrayYuanShi[0,j] = 1;} else {arrayYuanShi[0,j] = 0;}

  }
  for(int i = 0;i< arrayYuanShi.GetLength(0);i++)
  {
  for(int j = 0;j < k;j++)
  {
  Console.Write(arrayYuanShi[i,j]);
  }
  Console.WriteLine();
  }  
  Console.ReadLine();

  ArrayList arrayLieHao = new ArrayList();
  int t;
  for (t = 0; t < arrayYuanShi.GetLength(1); t++)
  {
  if (arrayYuanShi[0, t] == 1) { Console.Write(t); arrayLianHao.RemoveAt(t); [b][/b]Console.WriteLine("shanchule:", t); }
  if (arrayYuanShi[0, t] == 0) { continue; }
  arrayLieHao.Add(t);
  }
  Console.ReadLine();
  int[] arrayPD = (int[])arrayLieHao.ToArray(typeof(int));

  return arrayPD;
  }
  public static int[,] XinJuZhen(int [,]arrayYuanShi,int [] arrayPD ,int k)
   
  {
  int [,]array5 = new int[5,k];
  int u;
  for(int t = 0;t < arrayPD.Length;t++)
  {
  u=(int)arrayPD[t];
  u=u - t;
  for(int j = 0;j<k-1;j++)
  {
  for(int i = 0;i<5;i++)
  {
  int m = i;int n = j;
  if (j < u) { array5[m, n] = arrayYuanShi[i, j]; }
  else array5[m, n] = arrayYuanShi[i, j + 1];
  }
  }
  for(int i=0;i<5;i++)
  for(int j=0;j<k;j++)
  arrayYuanShi[i,j] = array5[i,j];
  }
  return array5;
  }
  public static int[,] YuCaoZuo(int[,] arrayXJZ,int countPD,int k,ArrayList arrayLianHao,ArrayList arrayLianHao1)
  {
  int[,] array2 = new int[5,k*(k-1)/2];
  int q = 0;bool d,e;
  for (int j = 0; j < k -1; j++)
  {
  for (int a = j + 1; (a < k) && (q < (k*(k-1)/2)); a++, q++)
  for(int i=0;i<5;i++)
  { 
  int b = i;
  d = Convert.ToBoolean(arrayXJZ[i,j]);
  e = Convert.ToBoolean(arrayXJZ[i,a]);
  array2[b,q] = Convert.ToInt32(d && e);
  }
  }
  for (int i = 0; i < k - 1; i++)
  {
  for (int j = i + 1; (j < k) && (q < k * (k - 1) / 2); j++, q++)
  {
  foreach (char c in arrayLianHao[i].ToString()) { if ((arrayLianHao[j].ToString()).IndexOf(c) >= 0) { (arrayLianHao[j].ToString()).Replace("c",""); } }

  arrayLianHao1[q] = arrayLianHao[i] .ToString()+ arrayLianHao[j].ToString();
  }
  }
  return array2;
  }
 }
  }


[解决办法]
LZ我建议你
1.把你写的这些删了
2.把问题描述清楚,给出示例输入和实例输出


3.用List<T>来代替ArrayList描述
4.打上个[LINQ]的标签

不但时髦百倍,而且会有更多的人关注。
(一般来说长代码还没有注释是不会有人看的)

[color=#FFFFFF](不过LZ代码真的Sh1t一样)[/color]

热点排行