3588819 发表于 2011-1-28 19:42:24

关于select.....case语句的问题

本帖最后由 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的数字处理了?请高手指教!

pusofalse 发表于 2011-1-28 19:54:59

改下标题。

3588819 发表于 2011-1-28 20:10:24

各位帮忙来看看啊!{:face (229):}

ghl781258 发表于 2011-1-28 20:27:53

看啥呀?程序没问题。你的逻辑有问题。

3588819 发表于 2011-1-28 20:31:40

回复 4# ghl781258
请您说明白些
按理说 汉字 不属于0到60 那为什么要弹出不及格的框呢?

netegg 发表于 2011-1-28 22:22:49

什么叫按理说,你试试看
msgbox('','','不及格'<60)
会返回什么?
编程没那么多按理说,如果非要按理说,按理说你这个根本就是基础没打好,按自己的想法想当然

pusofalse 发表于 2011-1-28 22:47:49

注意变量类型。先用StringIsInt或者StringIsFloat判断输入的是否是纯数值。判断时,用Number函数将输入的字符转换成数字类型。

xlbcwn 发表于 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

ceoguang 发表于 2011-2-10 17:09:19

呵呵,这道题让人想起了著名的表驱动法.

3mile 发表于 2011-2-10 18:41:35

回复 9# ceoguang
表驱动法很好很强大.
#include <array.au3>

dim $array=
dim $str=["不及格","及格","良好","优秀"]
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

jackey009 发表于 2011-2-11 10:24:38

回复 10# 3mile


    很好,很强大条条大路通罗马,终于看到用二维数组做的,学习一下。

netegg 发表于 2011-2-11 14:50:17

回复 11# jackey009


    {:face (394):}是二维数组的定义变了,还是学的时候就错了?什么地方出二维数组了?

haodd 发表于 2011-2-11 14:52:22

回复jackey009


    是二维数组的定义变了,还是学的时候就错了?什么地方出二维数组 ...
netegg 发表于 2011-2-11 14:50 http://www.autoitx.com/images/common/back.gif


    同感!
页: [1]
查看完整版本: 关于select.....case语句的问题