运行程序

时间:2016-05-15 04:17:44

标签: vb.net visual-studio-2012

我正在做一个关于Bisection Method的程序。我在执行程序时没有遇到任何错误,但是当我运行它时,输入数据,然后按计算按钮,不显示任何答案,但会出现一个滚动条并冻结程序。

我不知道出了什么问题,但我想这与逻辑错误有关。

Public Class Form1
    Dim a As Double
    Dim b As Double
    Dim c As Double
    Dim fa As Double
    Dim fb As Double
    Dim fc As Double
    Dim err As Double
    Dim n As Integer = 1
    Dim x As Double
    Dim diserr As String
    Dim fas As String
    Dim fbs As String
    Dim fcs As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        a = TextBox1.Text
        b = TextBox2.Text
        err = TextBox3.Text

        fa = a ^ 3 - a - 3
        fb = b ^ 3 - b - 3
        c = (a + b) / 2
        fc = c ^ 3 - c - 3
        x = Math.Abs(a - b)

        Do While x > err
            fa = a ^ 3 - a - 3
            fb = b ^ 3 - b - 3
            c = (a + b) / 2
            fc = c ^ 3 - c - 3
            x = Math.Abs(a - b)


            If err < x Then
                diserr = "No"
            Else
                diserr = "Yes"
            End If

            If fa > 0 Then
                fas = "+"
            Else
                fas = "-"
            End If

            If fb > 0 Then
                fbs = "+"
            Else
                fbs = "-"
            End If

            If fc > 0 Then
                fcs = "+"
            Else
                fcs = "-"
            End If

            If diserr = "Yes" Then
                fcs = Str(x)
            End If

            ListBox1.Items.Add(Str(n))
            ListBox2.Items.Add(Str(a))
            ListBox3.Items.Add(Str(b))
            ListBox4.Items.Add(Str(c))
            ListBox5.Items.Add(Str(x))
            ListBox6.Items.Add(diserr)
            ListBox7.Items.Add(fas)
            ListBox8.Items.Add(fbs)
            ListBox9.Items.Add(fcs)
            n = n + 1

            If fas = "-" And fcs = "+" Then
                b = c
            End If
            If fbs = "-" And fcs = "+" Then
                a = b
                b = c
            End If

        Loop

    End Sub 
End Class

1 个答案:

答案 0 :(得分:0)

您需要考虑fcs"-"的情况 如果我没有误解方法,你可以用

替换最后两个ifs
If fas <> fcs Then
    b = c
Else
    a = b
    b = c
End If