2014-08-27 85 views
-6

該程序將要求用戶輸入4次,然後用3個不同的答案顯示3個消息框。每個答案包含2個不同的數字(範圍),但我無法運行它,因爲我無法使用該函數。爲什麼這不起作用?我找不到任何解決方案

我的主要問題是功能。變量a,b,c,d將由用戶提供,x將在程序開始時由我提供。我無法運行該程序,因爲函數帶有藍線下劃線。

Dim a As Integer 
Dim b As Integer 
Dim c As Integer 
Dim d As Integer 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim a As Integer 
    Dim b As Integer 
    Dim c As Integer 
    Dim d As Integer 


Function f(x As Double) As Double 
    f = (a * x^3) + (b * x^2) + (c * x) + d 
    Exit Function 
End Function 
Sub incremental() 

    Dim left As Double 
    Dim right As Double 
    Dim product As Double 
    Dim counter As Integer 

    counter = 0 
    left = -10 
    right = -9.7 
    product = 1 

    a = InputBox("Please provide a coefficient for x^3.", "title", 0) 
    b = InputBox("Please provide a coefficient for x^2.", "title", 0) 
    c = InputBox("Please provide a coefficient for x^1.", "title", 0) 
    d = InputBox("Please provide a coefficient for x^0.", "title", 0) 

    Do While product > 0 
     product = f(left) * f(right) 

     If product > 0 Then 
      left = right 
      right = left + 0.3 

     Else 
      If counter = 0 Then 
       MsgBox("Your approximate root is " & left & " and " & right & ".") 
       counter = counter + 1 
       product = 1 
       left = right 
       right = left + 0.3 

      ElseIf counter = 1 Then 
       MsgBox("Your approximate root is " & left & " and " & right & ".") 
       counter = counter + 1 
       product = 1 
       left = right 
       right = left + 0.3 

      Else : counter = 2 
       MsgBox("Your approximate root is " & left & " and " & right & ".") 
       counter = 3 

      End If 

     End If 

    Loop 

End Sub 
+2

你的問題寫得不好,或組織得不好。你的問題到底是什麼? – Darrell 2014-08-27 18:48:30

+1

你有一個錯字「'hhht」。 – 2014-08-27 18:49:19

+0

歡迎來到Stack Overflow。請參閱我們的文章[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)和[On-Topic Questions](http://stackoverflow.com/help/on-話題)。投入這些簡短文件的時間將是值得的,因爲通過遵循他們的建議,您可能會更快地得到更好的答案。要特別注意你的頭銜 - 這個不能更模糊。 – JDB 2014-08-27 18:56:12

回答

1

安德魯·阿諾德說:

roght = left + 0.3 

應該改成這樣:

right = left + 0.3 
+0

+1發現,即使它(顯然)不是OP的唯一問題。 – JDB 2014-08-27 19:31:00

4

不知道這是你的錯別字只是其中一個或這實際上是問題,但是您缺少「End Sub」部分:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim a As Integer 
    Dim b As Integer 
    Dim c As Integer 
    Dim d As Integer 

' -------------------- 
End Sub ' <---------- 
' -------------------- 


Function f(x As Double) As Double 

這就是爲什麼Function以藍色下劃線。

但是這不會解決你的代碼。由於您不瞭解面向對象編程的基礎知識,因此它仍然存在問題。在這方面我可以提供的東西並不多,這只是一個主題。

例如,您聲明Button1_Click來處理您的按鈕點擊。你說a,b,cd將由用戶提供,但這似乎從未發生過(你沒有分配任何東西給他們)。然後結束該功能,導致a,b,cd變量被刪除(或更確切地說,這些變量所持有的存儲器地址被釋放)。

同時,你的函數f引用變量命名爲abcd但從來沒有宣佈他們。看起來你試圖使用Button1_Click函數中的變量,但Button1_Clickf是完全不同的上下文 - 它們不能訪問彼此的變量。如果您想通過a,b,cdf,則必須將這些值作爲參數(f(x, a, b, c, d))或通過其他方式(例如將它們聲明爲對象級屬性等)來獲取它們。

看起來這可能是一個編程作業,所以除了「祝你好運」之外,我不會再說什麼。

相關問題