一小项目,在调试的时候,遇到这个问题的。
使用于判断处理表格里面的数据,而且会对数据表的增加或者删除行后,重新处理表格的内容。
Dim i,row As Integer
Dim s As String = String.Empty
row = 8
For i = 0 To row
s &= (IIf(String.IsNullOrEmpty(s),"",";") & i)
If i = 5 Then row = 11
Next
结果:s=0;1;2;3;4;5;6;7;8 只循环到8,不是想象中的11。
--
现在知道答案了:在循环内改变循环次数,vb.net改变不了,C#可以(网友测试的)。
可以考虑用while,或者用ArrayList,HashTable来辅助后期表格的处理。
--
对于这个问题,谷歌到的:
http://blog.csdn.net/lingdxuyan/archive/2009/07/05/4323659.aspx
《循环语句技巧》
循环语句最重要的作用是降低循环体的复杂性,提高循环体的效率!
书写循环语句时应注意:
1、cpu跨循环层执行的次数直接影响程序的效率。因此,编写多重循环时,应当将最低的循环放最外层,最长的循环放最里层,以减少cpu跨循环层执行的次数;
如:
for( int i=0; i<10; i++ )
{
for( int j=0; j<100; j++ )
{
sum = sum + array[i][j];
}
}
若上例内外层循环位置交换一下,此时,cpu跨循环层次数增加,效率降低
2、若循环次数很大,且循环体内有逻辑判断,应将逻辑判断移到循环体外。这样可以提高效率,程序可读性差;
3、尽可能不要在for循环内修改循环变量,以免循环失去控制
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lingdxuyan/archive/2009/07/05/4323659.aspx
--------------------
http://www.softwelt.com/Know/KnowDetail-1944998.html
为什么循环次数不改变
在OA系统中,有LS程序如下:
...........
k=3
for i=1 to k
msgBox k
k=6
next
.........
我觉得这个循环应该执行6次才对,为什么他还是执行3次而实际k值其实却已经改变了呢?(注:此时的执行结果是3/6/6)
提问时间:2004-9-8 15:15:01 回答次数:(17) 提问人:软界网友 我来回答
回答(1)i k msgBox
1 3 3
2 6 6
3 6 6
虽然你在循环体内修改了K值,但i还是从1到3
回答(2)是呀,就是实践才是真理,想象有时是不成立的.因为已经进入了循环体,循环是三次,在下面在写循环才会执行k=6
回答(3)呵呵,谢谢两位,不过同事说.net里是不会这样的,所以我才觉得这样好奇或奇怪吧,不过好像while语句中就可以了(如下改变n值是可以的),我是
菜鸟,所以脸皮厚些再次发问,这又是为什么呢?
n=3
m=1
while m<n then
msgBox "yes!"
m=m+1
n=n+2
wend
回答(4)哦,上面写错了,应该是:m=m+2 n=n+1,不然就死循环了,呵呵
回答(5)哦,还有这样的事,下次试试,高手啊:)
回答(6)你在vb.net下试过吗,因为vb和lotus很相似.
还有,while是判断条件,你在for循环里输出k的值已经改变成6了,但循环次数没有变,while 则是,符合条件就执行.我想这是不一样的.
如果 for i=1 to k
if i=2 then
k=4
end if
if i=3 then
k=2
end if
next
你去.net下说能改变for循环的去执行一下,看他怎么执行.
回答(7)因为while是条件循环,循环前均会检测条件是否成立。即: M<N每次均会比较。
而FOR是计数循环,运行时首次确定循环次数,然后仅运行循环体内的代码,但你可以改变i的值改变循环次数。
回答(8)楼上说的我有点不明白,你说FOR是计数循环,但要知道FOR运行的顺序是先判断i<N再执行循环体的,其实它的运行情况和while基本上是一样的,并不
是首次确定循环次数就不执行判断语句了,我到觉得这个是编译语言所形成的。不是吗?
回答(9)可能这个是LS解释的问题
我用Java测试的就是循环6次的
回答(10)michael_law(馬可波羅) 可否有java执行一下
for i=1 to k
if i=2 then
k=4
end if
if i=3 then
k=2
end if
next
循环几次
回答(11)呵呵,结果揭晓:
LOTUS NOTES 和 VB.NET一样,for 循环不改变循环次数, while改变!
C#.NET中 for改变!即在循环体内改变上限值,循环次数也改变了!
其中的道理请有兴趣的朋友斟酌吧:)!
回答(12)不论具体的编程环境如何,在循环体中改变循环的次数是不符合结构化程序设计思想的
回答(13)LotusScript中的FOR循环是个特例,它只将首次执行时的目标值(终值)作为整个循环的参考值。在循环中只能通过改变 变量值 来达到更改循环次
数。
而WHILE循环就象前几位说的那样,它是条件判断循环,只要满足条件就终止循环,否则就一直循环。
回答(14)vb中就是这样了 没办法吧
回答(15)我的程序是这样的
int k = 3;
for(int i = 0;i < k;i++){
System.out.println("" + i + " " + k);
k = 6;
}
回答(16)程序
int k = 3;
for(int i = 0;i < k;i++){
if(i == 1) k = 4;
else if(i == 2) k = 2;
System.out.println("" + i + " " + k);
}
结果 0 3 1 4 2 2回答(17)这个问题还蛮有意思的