加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Vb.Net程序知识点:在循环内改变循环次数,vb.net改变不了,C#可以

发布时间:2020-12-16 23:02:35 所属栏目:大数据 来源:网络整理
导读:一小项目,在调试的时候,遇到这个问题的。 使用于判断处理表格里面的数据,而且会对数据表的增加或者删除行后,重新处理表格的内容。 Dim i,row As Integer Dim s As String = String.Empty row = 8 For i = 0 To row s = (IIf(String.IsNullOrEmpty(s),"",

一小项目,在调试的时候,遇到这个问题的。

使用于判断处理表格里面的数据,而且会对数据表的增加或者删除行后,重新处理表格的内容。

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跨循环层次数少,效率高

若上例内外层循环位置交换一下,此时,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)这个问题还蛮有意思的

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读