[VB]运行到这里卡了,谁帮忙顺一下?

Carneades 2009-03-08 12:48

我想编辑一个可以解出复数根的一元二次方程计算器,结果老是卡在红字这里。
麻烦大家帮我看下究竟该怎么改,谢谢!
Private Sub CmdSolve_Click()
Dim a As Single: a = Val(Text1.Text)
Dim b As Single: b = Val(Text2.Text)
Dim c As Single: c = Val(Text3.Text)
Dim p As Single: p = b ^ 2 - 4 * a * c
Dim x1 As Single, X2 As Single, e As Single, f As Single
If a = 0 Then
Text4.Text = "无解"
Text5.Text = "无解"
Else: If p >= 0 Then x1 = (-b + Sqr(p)) / (2 * a): X2 = (-b - Sqr(p)) / (2 * a): Text4.Text = x1: Text5.Text = X2
Else: e = -b / (2 * a): f = (Sqr(-p)) / (2 * a): Text4.Text = Str(e) & "+" & Str(f) & "i": Text5.Text = Str(e) & "+" & Str(f) & "i"
End If
End If
End Sub

Francisco 2009-03-08 14:18

如果If.....else要分行使用,那么then后面要换行,而且要有end If
否则if和else要用在同一行。
下面这两种都是可以的If a = 0 Then
    Text4.Text = \"无解\"
    Text5.Text = \"无解\"
Else
    If p >= 0 Then
        x1 = (-b + Sqr(p)) / (2 * a): X2 = (-b - Sqr(p)) / (2 * a)
        Text4.Text = x1
        Text5.Text = X2
    Else
        e = -b / (2 * a): f = (Sqr(-p)) / (2 * a)
        Text4.Text = Str(e) & \"+\" & Str(f) & \"i\"
        Text5.Text = Str(e) & \"+\" & Str(f) & \"i\"
    End If
End If If a = 0 Then
    Text4.Text = \"无解\"
    Text5.Text = \"无解\"
Else: If p >= 0 Then x1 = (-b + Sqr(p)) / (2 * a): X2 = (-b - Sqr(p)) / (2 * a): Text4.Text = x1: Text5.Text = X2 Else: e = -b / (2 * a): f = (Sqr(-p)) / (2 * a): Text4.Text = Str(e) & \"+\" & Str(f) & \"i\": Text5.Text = Str(e) & \"+\" & Str(f) & \"i\"
End If还有建议少使用“:”这样代码开起来有时会很乱

Carneades 2009-03-08 14:20

谢谢指点!那些行号是怎么来的?
在VB中认“GOTO某某行”这种语句吗?

Francisco 2009-03-08 14:33

[i=s] 本帖最后由 Francisco 于 2009-3-8 14:39 编辑 [/i]

行号是discus的code代码带的。
GoTo某某行后面可以时行号,也可以是标号,行号就是这个过程中的第几行,标号就是一串字符,以:结尾,如:
.......
if.....then goto line1
.....
line1:
.....

Carneades 2009-03-08 15:52

谢谢了!
下面把我这个能够解出虚根的一元二次方程计算器发布,欢迎各路高手批评指正!
如果仅仅想用,只要保留那个.exe即可。

山寨实验室 2009-03-08 19:26

VB中认goto某某行 才从QB转VB的时候常用 代码结构会很乱....

Francisco 2009-03-08 19:32

是的,goto会使代码结构比较混乱,一般是在on error goto....错误处理用,其他时候很少用。

山寨实验室 2009-03-08 19:44

一般都是goto err_handle

额~vb里call xxx 定义一个函数不是可以代替goto?

Carneades 2009-03-08 20:54

QB是什么?我以前用文曲星NC1020编写程序的时候经常用GOTO某某行。

Lucifer 2009-03-08 21:04

QB是QBasic吧。Dos下的Basic语言。
vb中不但可以goto 行号,也可以goto 标签。