找回密码
 加入
搜索
查看: 7164|回复: 12

[AU3基础] 关于select.....case语句的问题

 火.. [复制链接]
发表于 2011-1-28 19:42:24 | 显示全部楼层 |阅读模式
本帖最后由 3588819 于 2011-1-28 20:01 编辑

刚学习au3没几天,今天照着教程练习,遇到点问题。以下是源码:
Dim $a=InputBox("学生成绩计算","请输入学生成绩","请输入正确的成绩(100分制)")
If @error =1 Then Exit
If $a ="" Then MsgBox(0+16,"错误","请输入成绩")
Select
        Case $a>90 And $a<=100
                MsgBox(0,"成绩判断","优秀!")
        Case $a>80 And $a<=90
                MsgBox(0,"成绩判断","良好!")
        Case $a>=60 And $a<=80
                MsgBox(0,"成绩判断","及格!")
        Case $a>=0 And $a<60
                MsgBox(0,"成绩判断","不及格")
        Case Else
                MsgBox(0+16,"错误","请输入一个介于0~100的分数!")
EndSelect
问题:
为什么在输入框里打入汉字,再点确定的时候,弹出框是“不及格”呢??按说他应该弹出“请输入一个介于0~100的分数!”才对啊!难道它把汉字当做0到60的数字处理了?请高手指教!
发表于 2011-1-28 19:54:59 | 显示全部楼层
改下标题。
 楼主| 发表于 2011-1-28 20:10:24 | 显示全部楼层
各位帮忙来看看啊!
发表于 2011-1-28 20:27:53 | 显示全部楼层
看啥呀?程序没问题。你的逻辑有问题。
 楼主| 发表于 2011-1-28 20:31:40 | 显示全部楼层
回复 4# ghl781258
请您说明白些
按理说 汉字 不属于0到60 那为什么要弹出不及格的框呢?
发表于 2011-1-28 22:22:49 | 显示全部楼层
什么叫按理说,你试试看
msgbox('','','不及格'<60)
会返回什么?
编程没那么多按理说,如果非要按理说,按理说你这个根本就是基础没打好,按自己的想法想当然
发表于 2011-1-28 22:47:49 | 显示全部楼层
注意变量类型。先用StringIsInt或者StringIsFloat判断输入的是否是纯数值。判断时,用Number函数将输入的字符转换成数字类型。
发表于 2011-2-10 15:30:36 | 显示全部楼层
While 1
        Dim $a=InputBox("学生成绩计算","请输入学生成绩","请输入正确的成绩(100分制)")
        If @error =1 Then Exit
        If $a ="" Then MsgBox(0+16,"错误","请输入成绩")
        If StringIsFloat ($a) Or StringIsInt ($a) Then
                Select
                        Case $a>90 And $a<=100
                                MsgBox(0,"成绩判断","优秀!")
                                Exit
                        Case $a>80 And $a<=90
                                MsgBox(0,"成绩判断","良好!")
                                Exit
                        Case $a>=60 And $a<=80
                                MsgBox(0,"成绩判断","及格!")
                                Exit
                        Case $a>=0 And $a<60
                                MsgBox(0,"成绩判断","不及格")
                                Exit
                        Case Else
                                MsgBox(0+16,"错误","请输入一个介于0~100的分数!")
                EndSelect
        Else
                MsgBox(0+16,"错误","请输入一个分数!")
        EndIf
WEnd
发表于 2011-2-10 17:09:19 | 显示全部楼层
呵呵,这道题让人想起了著名的表驱动法.
发表于 2011-2-10 18:41:35 | 显示全部楼层
回复 9# ceoguang
表驱动法很好很强大.
#include <array.au3>

dim $array[4]=[60,80,90,100]
dim $str[4]=["不及格","及格","良好","优秀"]
while 1
        Dim $a=InputBox("学生成绩计算","请输入学生成绩","请输入正确的成绩(100分制)")
        If @error =1 Then Exit
        If $a ="" Then MsgBox(0+16,"错误","请输入成绩")
        for $i=0 to 2
                        if $a<$array[$i] then ExitLoop
                Next                
                msgbox(0,$i,$str[$i])
wend
发表于 2011-2-11 10:24:38 | 显示全部楼层
回复 10# 3mile


    很好,很强大条条大路通罗马,终于看到用二维数组做的,学习一下。
发表于 2011-2-11 14:50:17 | 显示全部楼层
回复 11# jackey009


    是二维数组的定义变了,还是学的时候就错了?什么地方出二维数组了?
发表于 2011-2-11 14:52:22 | 显示全部楼层
回复  jackey009


    是二维数组的定义变了,还是学的时候就错了?什么地方出二维数组 ...
netegg 发表于 2011-2-11 14:50



    同感!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 13:43 , Processed in 0.093531 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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