haodd 发表于 2011-3-10 21:32:31

Switch Case 问题 【已解决】

本帖最后由 haodd 于 2011-3-10 22:32 编辑

{:face (229):}
在论坛上见过,但是搜索不到了
想知道原因 和解决方法 谢谢$y = InputBox("输入年份","输入年份","2011")
$m = InputBox("输入月份","输入月份","5")
If $y <> "" And $m <> "" Then
                MsgBox(0,"确认输入",Number($y)&"年"&Number($m)&"月")
                Switch Number($m)
                        Case 2                               
                                If IsInt(Number($y)/4) Then
                                        $Monday = 29
                                Else
                                        $Monday = 28
                                EndIf
                        Case 11 Or 4 Or 6 Or 9
                                $Monday = 30
                        Case 1 Or 3 Or 5 Or 7 Or 8 Or 10 Or 12
                                $Monday = 31
                        Case Else
                                $Monday = 30                               
                EndSwitch
        EndIf
        MsgBox(0,0,$Monday)当小月和大月的case更换后,效果还是一样!! 上面的内容 当月份是 1 Or 3 Or 5 Or 7 Or 8 Or 10 Or 12 返回 30
下面的内容 当月份是 11 Or 4 Or 6 Or 9 返回 31$y = InputBox("输入年份","输入年份","2011")
$m = InputBox("输入月份","输入月份","6")
If $y <> "" And $m <> "" Then
                MsgBox(0,"确认输入",Number($y)&"年"&Number($m)&"月")
                Switch Number($m)
                        Case 2                               
                                If IsInt(Number($y)/4) Then
                                        $Monday = 29
                                Else
                                        $Monday = 28
                                EndIf
                        Case 1 Or 3 Or 5 Or 7 Or 8 Or 10 Or 12
                                $Monday = 31
                        Case 11 Or 4 Or 6 Or 9
                                $Monday = 30
                        Case Else
                                $Monday = 30                               
                EndSwitch
        EndIf
        MsgBox(0,0,$Monday)

水木子 发表于 2011-3-10 21:54:06

$y = InputBox("输入年份", "输入年份", "2011")
$m = InputBox("输入月份", "输入月份", "5")

If $y <> "" And $m <> "" Then
        MsgBox(0, "确认输入", Number($y) & "年" & Number($m) & "月")
        Switch Number($m)
                Case 2
                        If IsInt(Number($y) / 4) Then
                                $Monday = 29
                        Else
                                $Monday = 28
                        EndIf
                Case 11, 4, 6, 9
                        $Monday = 30
                Case 1, 3, 5, 7, 8, 10, 12
                        $Monday = 31
                Case Else
                        $Monday = 30
        EndSwitch
EndIf
MsgBox(0, 0, $Monday)

haodd 发表于 2011-3-10 22:10:18

回复 2# 水木子


    这是怎么回事呢 ?

找原因

水木子 发表于 2011-3-10 22:14:02

本帖最后由 水木子 于 2011-3-10 22:17 编辑

回复 3# haodd

是你要的结果吗?

我想 or 应该应用在 If XXX or XXX Then 这样的判断中吧!

而 Switch 这样的多条件运行语句 Case 如果是多值,其每个值应该直接用 “,” 隔开就行了。

yhxhappy 发表于 2011-3-10 22:24:50

楼主何必要整得哪么复杂啊,有特殊需求吗?#Include <Date.au3>

$y = InputBox("输入年份", "输入年份", "2011")
$m = InputBox("输入月份", "输入月份", "5")

If $y <> "" And $m <> "" Then
        MsgBox(0, "确认输入", Number($y) & "年" & Number($m) & "月")
        MsgBox(0, 0, _DateDaysInMonth($y, $m))
EndIf

haodd 发表于 2011-3-10 22:32:12

回复 5# yhxhappy


    我不知道有这个的函数啊真是开眼了 谢谢啊

haodd 发表于 2011-3-10 22:32:38

回复 4# 水木子


    对于case 的用法也了解了 谢谢

happytc 发表于 2011-3-10 22:36:40

回复水木子


    这是怎么回事呢 ?

找原因
haodd 发表于 2011-3-10 22:10 http://www.autoitx.com/images/common/back.gif

当然不行了,“Or”的优先级非常高。一般总会先求它的值的,并且得出的值是两个:True/False,你的代码中,象:Case 11 Or 4 Or 6 Or 9 ,实际跟:Case True完全一样。也就是会先求“11 Or 4 Or 6 Or 9”的值(为True)

水木子 发表于 2011-3-10 22:39:30

回复 5# yhxhappy
有现成的函数调用固然是很方便,不过我觉得更重要的学习方法和思路,要不然这些永远都将是个谜。

liu19910917 发表于 2011-3-10 23:11:39

学习了 多谢 楼主!!!

zery 发表于 2011-3-12 15:38:56

看来多熟悉一下函数可以少走点弯路

leibin0121 发表于 2011-9-7 19:25:32

学习了 都是强人
页: [1]
查看完整版本: Switch Case 问题 【已解决】