c#二维数组,i+1超出了数组界限怎么办? for (int i = 0; i < 24; i++) {if (WU[i] + P[i] - EU[i] - R[i] <= WUM) { WU[i + 1] = WU[i] + P[i] - EU[i] - R[i]; WL[i + 1] = WL[i] - EL[i]; WD[i + 1] = WD[i] - ED[i]; }}运行到WU[i+1]的时候就跳出 说超出了数组界限。c语言里面就不会问题。这怎么解决啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的数组总共才24吧你运行到i=23的时候,i+1=24了,肯定超出界限了啊你应该判断i是否等于23,如果等于23则做另外的处理 那就是超出了呗,WU长度要>=25才不会超 对所有数组的索引都进行判断就好了if((i+1)<=WU.Length)WU[i + 1] = WU[i] + P[i] - EU[i] - R[i];所有的数组都像上面那样进行判断 for (int i = 0; i < WU.Length-1; i++) 当你的i==23的时候 ,i+1是24,超出界限了。for (int i = 0; i < 23; i++) for (int i = 0; i < wu[i].lenght; i++) 我把循环做到24,for循环里面又对i==23的情况做了单独处理,但是最后结果输出只有23行了,这是怎么回事啊? 你们推测的对,我改了,在i==23的时候break,但是输出结果变成23行了,这怎么办啊? 代码太长了,就不贴上来了。少最后一行啊。我觉得还是for循环那里定义的问题。不是从0开始么,那到23应该就是24行才对。但最后输出来就到23行就没有下面的了。 for (int i = 0; i < 24; i++) {……if (i < 23) { if (WU[i] + P[i] - EU[i] - R[i] <= WUM) { WU[i + 1] = WU[i] + P[i] - EU[i] - R[i]; WL[i + 1] = WL[i] - EL[i]; WD[i + 1] = WD[i] - ED[i]; } else {……} }else break;……StreamWriter sw = new StreamWriter(pathout, true); sw.WriteLine(WU[i]) sw.Close(); }这是部分代码 关于for循环的 大家看看怎么最后一行没了呢? for (int i = 0; i < 24; i++) {……StreamWriter sw = new StreamWriter(pathout, true); sw.WriteLine(WU[i]) sw.Close();if (i < 23) { if (WU[i] + P[i] - EU[i] - R[i] <= WUM) { WU[i + 1] = WU[i] + P[i] - EU[i] - R[i]; WL[i + 1] = WL[i] - EL[i]; WD[i + 1] = WD[i] - ED[i]; } else {……} }else break;…… }写的部分直接放在If的前面就可以了,因为if里面是对WU[i + 1]的值进行修改的,对WU[i]没影响,所以直接将WU[i]写入文本就可以了。 已经解决啦~原来是因为break,直接跳出循环了,最后一行就没有计算的缘故。把break去掉就好了。谢谢各位了~ C# 更新数据库问题 请问.netPNG图片显示不正常,如何处理 求助:关于combobox相关控件的选择问题 c#做的图形界面从从c/s程序,后期出现几个问题,期待解决方案。 一个TabControl控件的问题 求助 ConnectionString 属性尚未初始化。 C#到底是语言还是开发工具?? 通过抓包软件抓到个POST包,如何用C#将抓到的包提交 我是新手,这道题真的是生死攸关,希望各位同仁多多指教,在下不胜感激 数据采集后如何实现实时绘图显示? 又是一个面试题 [控件]求一个类似于VS代码编辑器控件...........急用............
你运行到i=23的时候,i+1=24了,肯定超出界限了啊
你应该判断i是否等于23,如果等于23则做另外的处理
if((i+1)<=WU.Length)
WU[i + 1] = WU[i] + P[i] - EU[i] - R[i];所有的数组都像上面那样进行判断
for (int i = 0; i < 23; i++)
for (int i = 0; i < wu[i].lenght; i++)
但是输出结果变成23行了,这怎么办啊?
for (int i = 0; i < 24; i++)
{
……
if (i < 23)
{
if (WU[i] + P[i] - EU[i] - R[i] <= WUM)
{
WU[i + 1] = WU[i] + P[i] - EU[i] - R[i];
WL[i + 1] = WL[i] - EL[i];
WD[i + 1] = WD[i] - ED[i];
}
else
{……}
}
else
break;
……
StreamWriter sw = new StreamWriter(pathout, true);
sw.WriteLine(WU[i])
sw.Close(); }这是部分代码 关于for循环的 大家看看怎么最后一行没了呢?
{
……
StreamWriter sw = new StreamWriter(pathout, true);
sw.WriteLine(WU[i])
sw.Close();
if (i < 23)
{
if (WU[i] + P[i] - EU[i] - R[i] <= WUM)
{
WU[i + 1] = WU[i] + P[i] - EU[i] - R[i];
WL[i + 1] = WL[i] - EL[i];
WD[i + 1] = WD[i] - ED[i];
}
else
{……}
}
else
break;
……
}写的部分直接放在If的前面就可以了,因为if里面是对WU[i + 1]的值进行修改的,对WU[i]没影响,所以直接将WU[i]写入文本就可以了。