找回密码
 加入
搜索
查看: 9699|回复: 17

[AU3基础] If...Then...Else 判断语句请教(已解决)

 火.. [复制链接]
发表于 2012-9-13 10:46:53 | 显示全部楼层 |阅读模式
本帖最后由 leilei123 于 2012-9-13 14:59 编辑

原实例代码
Dim $s
$s=InputBox("学生成绩","请输入学生的成绩")
If @error=1 Or $s="" Then
        Exit
EndIf
If $s>=0 And $s<=100 Then
        If $s>90 Then
                MsgBox(0,"学生成绩","优秀!")
        ElseIf $s>80 Then
                msgBox(0,"学生成绩","良好!")
        ElseIf $s>=60 Then
                msgBox(0,"学生成绩","及格!")
        Else
                msgBox(0,"学生成绩","不及格!")
                EndIf
Else
        MsgBox(0+16,"学生成绩","学生成绩输入错误!")
        EndIf

不明白的地方  
        ElseIf $s>80 Then
                msgBox(0,"学生成绩","良好!")
        ElseIf $s>=60 Then
                msgBox(0,"学生成绩","及格!")
为啥不能换行写成
                Else
                If $s>80 Then
                msgBox(0,"学生成绩","良好!")
                Else
                If $s>=60 Then
                msgBox(0,"学生成绩","及格!")
我看有的实例是分开写的哈,啥时候elseif需写一起,啥时候可以换行分开写?
发表于 2012-9-13 11:07:49 | 显示全部楼层
回复 1# leilei123

怎么可能不行,后面的 endif 跟齐了就行了,几层跟几个
 楼主| 发表于 2012-9-13 11:31:05 | 显示全部楼层
回复 2# netegg


  不太明白,就把原实例的elseif,换行书写就得加endif吗?能给详细解释下吗。谢谢了!!
发表于 2012-9-13 11:38:17 | 显示全部楼层
本帖最后由 netegg 于 2012-9-13 11:42 编辑

if ...then
......
else
  if ..... then
  .....
  else
    if ...... then
      ......
    endif
  endif
endif
发表于 2012-9-13 11:42:46 | 显示全部楼层
if ...then
......

        if ..... then
        .....
        if ...... then
        ......
        EndIf
Else
......
EndIf
这样也可以啊
发表于 2012-9-13 12:08:47 | 显示全部楼层
本帖最后由 netegg 于 2012-9-13 12:16 编辑

回复 5# yunnl
确定这个和楼主的要求效果相同?不过,也是,看lz如何安排自己的条件了
 楼主| 发表于 2012-9-13 12:22:06 | 显示全部楼层
回复 4# netegg

非常感谢,还有一点明白,原实例ElseIf一起书写
If $s>90 Then
                MsgBox(0,"学生成绩","优秀!")
        ElseIf $s>80 Then
                msgBox(0,"学生成绩","良好!")
        ElseIf $s>=60 Then
                msgBox(0,"学生成绩","及格!")
        Else
                msgBox(0,"学生成绩","不及格!")
                EndIf
这一段后边只跟一个endif就可以,把else,  if换行写,endif就得多个?为啥哈
发表于 2012-9-13 12:27:22 | 显示全部楼层
elseif 是一个关键字和 if 是同级的
else
  if 是两个关键字,且是嵌套关系,是上层 if 里的一个分支,必须标识出判断结束,即endif

评分

参与人数 1金钱 +10 收起 理由
leilei123 + 10

查看全部评分

发表于 2012-9-13 12:53:27 | 显示全部楼层
IF
    ElseIF
    ElseIF
Endif
串联关系

IF
    ELSE
      IF
      ENDIF
     IF
     ENDIF
Endif
内部的IF是并列关系
发表于 2012-9-13 13:10:46 | 显示全部楼层
回复 9# Qokelate
有点出入吧,我怎么感觉
if
elseif
elseif
endif
是并列关系
if
  if
  endif
else
   if
   endif
endif
才是串联关系呀
发表于 2012-9-13 13:20:28 | 显示全部楼层
本帖最后由 Qokelate 于 2012-9-13 13:24 编辑

回复 10# netegg


    IF
        ELSEIF
        ELSEIF
        ELSEIF
    ENDIF

等价于
    IF
        ELSE
            IF
                 ELSE
                        IF
                            ELSE
                         ENDIF
               ENDIF
         ENDIF

而对于
IF            ;1
   ELSE
         IF   ;2
          ENDIF
         IF   ;3
          ENDIF
ENDIF
而言,执行2的判断必定也会执行3的判断,因此说它们是并列的,而ELSEIF只是对上一次判断结果的筛选
发表于 2012-9-13 13:38:16 | 显示全部楼层
本帖最后由 Qokelate 于 2012-9-13 13:41 编辑

再想了想,觉得怎样说都不能成立,不同用法产生的关系不同,不能单纯的说怎样怎样的关系,只能是谁包含在谁之中,谁对谁的结果进行筛选

PS:我认为ELSEIF只是为了代码更美观些而已(可以少写些ENDIF)

评分

参与人数 1金钱 +10 收起 理由
leilei123 + 10

查看全部评分

发表于 2012-9-13 14:12:18 | 显示全部楼层
本帖最后由 netegg 于 2012-9-13 14:14 编辑

local $x =3, $y = 1
if $x = 0 then
  msgbox(0,0,$x)
else
  if $y = 1 then
     msgbox(0,0,$y-1)
  endif
endif

local $x=3, $y = 1
if $x = 0 then
   msgbox(0,0,$x)
elseif $x= 2 then
  msgbox(0,0,$y - 1)
endif
发表于 2012-9-13 14:16:29 | 显示全部楼层
只要明白了最简单的IF...ELSE....ENDIF,对嵌套有ELSEIF的理解也就不难了。
这种条件语句是按层级关系,由外向内、由上向下的顺序判断条件成立与否,成立就执行之后的语句,之后跳到结尾。IF、ELSEIF只不过是一个条件开关。
 楼主| 发表于 2012-9-13 14:57:47 | 显示全部楼层
谢谢大家的帮助~理解了不少
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 09:05 , Processed in 0.084171 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表