日期:2014-05-18  浏览次数:20953 次

请教各位关于跳出循环的问题???
for (int i = 0; i < 40; i++)
  {
   
  for (int j = 0; j < 19; j++)
  {
  if (j == 19)
  break ; 
  for (int k = 0; k < jxyongshi1[j]; j++)
  f1[i, 0] = f1[i, 0] + w * p[j, Chrom1[i, j] + k];
  }
   
在运行时总是提示 jxyongshi1[j]/*(j的值此时是19)*/索引超出数组下限。我加了一个break语句还是出现这样的问题,请问是为什么?

------解决方案--------------------
j的范围是小于19,不包含19,你访问19的下标当然出错了,记住下标从0开始,19是第20个,你的jxyongshi1数组应该只有19个,没20

j不会等于19,所以break无效的,而且第三个for循环,又对j做了++的操作,你肯定会出问题啊

j=18时,你就应该跳出,否则第三个for ++ 后j=19
------解决方案--------------------
for (int i = 0; i < 40; i++)
{

for (int j = 0; j < 19; j++)
{
if (j == 18)//改这里
break ;
for (int k = 0; k < jxyongshi1[j]; j++)
f1[i, 0] = f1[i, 0] + w * p[j, Chrom1[i, j] + k];
}
这样就好了
------解决方案--------------------
for (int k = 0; k < jxyongshi1[j]; j++)
应该是?
for (int k = 0; k < jxyongshi1[j]; k++)

------解决方案--------------------
重0开始 就是0-4有5个数 0 1 2 3 4