找回密码
 加入
搜索
查看: 4267|回复: 11

[AU3基础] Switch Case 问题 【已解决】

  [复制链接]
发表于 2011-3-10 21:32:31 | 显示全部楼层 |阅读模式
本帖最后由 haodd 于 2011-3-10 22:32 编辑


在论坛上见过,但是搜索不到了
想知道原因 和解决方法 谢谢
$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)

评分

参与人数 1金钱 +20 收起 理由
haodd + 20 回复 2# 水木子 这是怎么回事呢 ...

查看全部评分

 楼主| 发表于 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 如果是多值,其每个值应该直接用 “,” 隔开就行了。
发表于 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
 楼主| 发表于 2011-3-10 22:32:12 | 显示全部楼层
回复 5# yhxhappy


    我不知道有这个的函数啊  真是开眼了 谢谢啊
 楼主| 发表于 2011-3-10 22:32:38 | 显示全部楼层
回复 4# 水木子


    对于case 的用法也了解了 谢谢
发表于 2011-3-10 22:36:40 | 显示全部楼层
回复  水木子


    这是怎么回事呢 ?

找原因
haodd 发表于 2011-3-10 22:10


当然不行了,“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
有现成的函数调用固然是很方便,不过我觉得更重要的学习方法和思路,要不然这些永远都将是个谜。
发表于 2011-3-10 23:11:39 | 显示全部楼层
学习了 多谢 楼主!!!
发表于 2011-3-12 15:38:56 | 显示全部楼层
看来多熟悉一下函数可以少走点弯路
发表于 2011-9-7 19:25:32 | 显示全部楼层
学习了 都是强人
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 17:27 , Processed in 0.329783 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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