這是因為妳把s和i都聲明為整形變量(Integer),整數妳應該知道是什麽吧?就是不帶小數的數,VB會自動把s和i的小數去掉(大於0.5的就進1),所以 s=s+0.9 就跟 s=s+1 壹樣!i=i+0.6 也跟i=i+1壹樣!
另外像s=s和i=i這樣的看起來很傻的,完全是多此壹舉啊!
改為這樣:
Private?Sub?Command1_Click()Dim?n?As?Integer,?s?As?Single's設為單精度浮點數,這樣才支持小數
s?=?0's的初始值就是0,所以這行是可以刪掉的
For?n?=?0?To?24
If?Check1(n).Value?=?1?Then'只需判斷=1這個即可,=0就不用處理了
s?=?s?+?0.9
End?If
Next?n
Dim?i?As?Single'i也設為單精度浮點數。另外上面定義的n可以重復使用的,無須再聲明m
i?=?0'同理這行也可以刪掉
For?n?=?0?To?24
If?Check2(n).Value?=?1?Then'同上
i?=?i?+?0.6
End?If
Next?n
jstxt.Text?=?(s?+?i)?/?25
另外,程序如果要優化到最簡單,可以這樣:
Private?Sub?Command1_Click()Dim?n?As?Integer,?s?As?Single,?i?As?Single
For?n?=?0?To?24
If?Check1(n).Value?=?1?Then?s?=?s?+?0.9
If?Check2(n).Value?=?1?Then?i?=?i?+?0.6
Next?n
jstxt.Text?=?(s?+?i)?/?25 還有更簡單的:
Private?Sub?Command1_Click()Dim?n?As?Integer,?s?As?Single,?i?As?Single
For?n?=?0?To?24
s?=?s?+?0.9?*?Check1(n).Value
i?=?i?+?0.6?*?Check2(n).Value
Next?n
jstxt.Text?=?(s?+?i)?/?25 最後這個如果妳能自己看出它的原理,那麽對妳的編程技能將有很大提高!