看板 Visual_Basic 關於我們 聯絡資訊
老師雖然只要求我們寫出1加到n即可 但我想試試更好的版本 結果就出問題了 請板上先進指點一下迷津:) 這個程式主要是可以指定由A連加到B 另外當輸入值非整數時可以拒絕運作 程式碼不長 如下: Option Explicit Sub 連續加法() '為該程式命名 Dim A, B, i, ans As Integer MsgBox ("這是一個簡單的小程式,只要輸入A、B兩數, 就能自動算出由A連續加到B的答案喔!") ans = 0 Do While ans = 0 A = InputBox("請輸入A") '要求使用者輸入變數n If Fix(A) - A = 0 Then B = InputBox("請輸入B") '要求使用者輸入變數n If B - Fix(B) = 0 Then ans = (A + B)*(B-A+1)/2 Else: MsgBox ("要輸入整數才行!請重新輸入!") End If Else: MsgBox ("要輸入整數才行!請重新輸入!") End If Loop MsgBox ("由" & A & "加到" & B & "的答案為" & ans) '顯示答案 End Sub 問題在於計算答案的部份 原本的(A+B)*(B-A+1)/2 在最初是可以使用的 可是加了Do Loop、If 之後卻算不出來了 後來發現是(A+B)出了問題 當A=1 B=10 出來的數不是11 而是110 它好像把數字當成字串一樣加在一起 為什麼會這樣? 我想了好久也想不通= = 還請高手指點 P.S:判斷輸入值是否為整數的地方 是否有更好的作法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.240.122
MOONRAKER:(1)dim寫錯了,要寫dim a as integer, b as integer 04/09 23:33
MOONRAKER:不然他就當variant處理 04/09 23:34
MOONRAKER:(2)整數判斷使用isnumeric() 04/09 23:35
感謝您~~我這就去試試 另外用variant會對數字運算造成什麼影響嗎? 還有isnumeric()不是只能判斷是否為數值嗎? 它可以用來分整數跟小數嗎? ※ 編輯: u19901006 來自: 140.112.240.122 (04/09 23:41)
MOONRAKER:……那你可以用instr()找看裡面有沒有小數點 04/11 09:21
MOONRAKER:variant對數字運算的影響就是如你碰到的,當字串處理。 04/11 09:21