VB里if语句判断有点小问题

本来我没加入if语句判断还能进行计算,可是加入后,连计算都不行了。可是Δ又必须要判定呀。应该怎么办?求高手指导指导?还可以提出更多优化的地方,可以追加的!!!if判断里面... 本来我没加入if语句判断还能进行计算,可是加入后,连计算都不行了。可是Δ又必须要判定呀。应该怎么办?求高手指导指导?还可以提出更多优化的地方,可以追加的!!!
if判断里面多个判断应该如何编写?假如我想针对der》0 或=0或《0分别编写呢?
是不是if der》0 then………if der=0 then…… if der《0 then……这时else又出现在哪?我语法不是很会哈。。。又追加的!
展开
 我来答
亿劫修行
2014-12-26 · TA获得超过199个赞
知道小有建树答主
回答量:92
采纳率:100%
帮助的人:26.9万
展开全部

我的窗口控件如图所示:

以下代码即可满足你的计算要求:

Private Sub Command1_Click()'计算按钮代码

   Dim a, b, c As Integer

   Dim X1, X2 As Single

   Dim dear As Single

   

   a = Val(Text1.Text)

   b = Val(Text2.Text)

   c = Val(Text3.Text)

   dear = b ^ 2 - 4 * a * c

   Label1.Caption = "dear=" + Str(dear)

   If dear > 0 Or dear = 0 Then

        X1 = (-b - Sqr(dear)) / (2 * a)

        X2 = (-b + Sqr(dear)) / (2 * a)

        Text4.Text = Str(X1)

        Text5.Text = Str(X2)

   Else

        Text4.Text = "无解"

        Text5.Text = "无解"

   End If

End Sub

更多追问追答
追问
Label1.Caption = "dear=" + Str(dear)
这句话是什么意思?我们没学过呢。。。
还有在判断语句中,两个条件是独立的,也就是说,我的那个代码错误是因为在else后没有把x赋予45两个文本框?因为第一个判断里的赋值只对第一个判断有效而对第二个判断无效?
还有能说说你的界面是如何美化的么?给我提一丢丢建议?
追答
你好!
难得你这么上心,我就再做些解答。不需要加什么分,只要对你有所帮助就好。
=============================================================
1、Label1.Caption = "dear=" + Str(dear)的意思是,用等号后面的两个字符串相加,得到一个新的字符串。然后给label1的Caption属性赋值。Caption属性是指在运行中标签控件需要显示的内容。
你在窗体中添加这个控件,运行我的代码,就知道。Caption属性不仅label控件有,按钮、窗体等控件都有,含义都是一样的。
我增加这一语句,是想把根号下的值显示出来,是大于零还是小于零,一目了然。

2、你对IF语句的理解有点偏差。其实,你的判断语句(if der >0 then)中,并没有两个条件,而只有一个条件(der >0)。而在我的判断语句(If dear > 0 Or dear = 0 Then)中才有,它的意思是当dear > 0 和 dear = 0,只要有一个条件成立,那么就执行then之后的语句,否则执行else之后的语句。

3、关于val(string)函数,应该这样理解:将 "123"(字符123) 这样的字符串,转换为可以进行加减乘除运算的123(一百二十三),以便参加算术运算。而str(x)函数,则是val函数的逆运算,将一个数值x转换成字符串。比如 str(100/5),其结果是 "20",注意,这个20是字符型的,而非数值20。

4、你已经悟到了,你在else之后,并没有语句去改变text4、text5的text属性值。这一点,Yuqi_Tan兄的代码中已经很好解决了。

5、建议你写代码时,应该像Yuqi_Tan兄那样,在适当的行缩进,这样程序的层次分明,便于阅读与分析。

6、关于美化,我没有很好的建议,只是将相关联的控件,放在一起排列整齐,大小相同,再取
相同的背景颜色,也就差不多了。但是现在我觉得你现在,应该把精力主要放在基本语法上面。

7、我去念佛了,你要是有空,也跟我去。
Yuqi_Tan

2014-12-25 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3460万
展开全部
1、你把x1=val((-b-sqr(der)/2a)改成x1=-b-sqr(der)/2a,相应的x2也做相同的修改。
2、把if der >0 改成der>=0。
3、把x1="无解“:x2="无解"改成text4="无解":text5="无解"。
4、最好在前面再加上dim x1 as integer,x2 as integer
然后 再试一试,应该就好了。目测没有发现其它错误。

有问题再留言。
更多追问追答
追问
我为什么要把x设置为整数?这样不是有限制了么?而且为什么不把x从字符串转化为数据?转化为数据不是更准确么?
追答

1、你没有对声明x1和x2两个变量的类型,我建议你加上,可是我又写错了。应该是声明成为单精度类型,就是dim x1 as single,x2 as single。

2、把x1和x2声明成为单精度数,就足够准确了。

3、如果想按照der的值多分几个选择项,可以这样用:

if der >0 then
    x1=(-b+sqr(der))/(2*a)
    x2=(-b-sqr(der))/(2*a)
elseif der=0 then
    x1=-b/2a
    x2=x1
else
    text4="无解"
    text5="无解"
end if

如有疑问再留言。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式