以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]帮助文件中的表述错误:关于DO LOOP  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=450)

--  作者:wcs
--  发布时间:2008/9/11 22:59:00
--  [讨论]帮助文件中的表述错误:关于DO LOOP
 

Dim Sum As Integer
Dim
i As Integer = 1
Do
While i <= 100
    Sum = Sum + i
    i = i +
1
   
If i = 50 Then
        Exit
Do
    End
If
Loop

Output.Show(Sum)

上面的代码实际上只是求得1到50的累计值,因为在i等于50的时候退出了循环。


实际上,结果是1-49加总的结果,因为当i=50的时候,就退出了DO  LOOP,没有机会加总了。

如果把i=i+1调上一行,结果就是对的了吧。


--  作者:smileboy
--  发布时间:2008/9/11 23:04:00
--  

Dim Sum As Integer
Dim
i As Integer = 1
Do
While i <= 100
    Sum = Sum + i
    i = i +
1
   
If i > 50 Then
        Exit
Do
    End
If
Loop

Output.Show(Sum)


--  作者:wcs
--  发布时间:2008/9/11 23:08:00
--  

我在一楼贴的是帮助中的原文,原文有误啊。

smileboy  的当然正确。


--  作者:bjljb
--  发布时间:2008/9/12 0:13:00
--  

楼主的意思是:


    Sum = Sum + i
    i = i + 1
改成
    i = i + 1
    Sum = Sum + i

但是,如果这样写的话,千万不要忘了把前面的
    Dim i As Integer = 1
改成
    Dim i As Integer = 0

否则程序又变成从2加到50了!这个结果自然也是错的。

 

当然,按照smileboy版主的改法,这个程序就一点儿问题也没有了。

 

我建议还是按照smileboy版主的改法修改原帮助文件,这也符合大多数人写程序的习惯。


--  作者:狐狸爸爸
--  发布时间:2008/9/12 8:32:00
--  
新的帮助已经改好了
--  作者:bjljb
--  发布时间:2008/9/16 0:20:00
--  
我下载了9月15号的最新版,刚才正好看到这一段代码,还是没有改过来呀!
--  作者:kylin
--  发布时间:2008/9/16 8:19:00
--  
9月16日已经更新了
[此贴子已经被作者于2008-9-16 8:24:40编辑过]