请教各位关于跳出循环的问题???
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