switch语句匹配字符串

来源:互联网 发布:邮储银行网络培训学院 编辑:程序博客网 时间:2024/05/23 14:19
JDK 7.0中switch语句匹配字符串就不必说了哈,下面只讨论在JDK6中的情况。
根据相关文档……switch语句是只能匹配整型数据的,匹配字符串的话编译器就会报错:类型不匹配。Java:使switch语句匹配字符串 - Kia_Or.EOF - CrioRad StyleJava:使switch语句匹配字符串 - Kia_Or.EOF - CrioRad Style
怎么解决这个问题呢……拿本大厚书来说,你想找某个章节的内容肿么办?得先去看目录(大厚书么……),再找着那一章的名字,看那一章在哪一页上然后翻到那一页上去就找到了。
上面那个就是思路:
1.先搞一个字符串变量,里面存一些字符串作为目录。
这些字符串占的字符位数和间距都是固定的,这样哪个字符串在哪个位置就是明确的了,这每个字符串的位置就可以看作“页数”。
2.另一个字符串变量放的就是要匹配的其中一个字符串。
这个好比你要找的章节名称。
3.switch语句中每个case后的数字就是每个字符串的位置,这就是对应的“页数”。
4.怎么让程序看目录呢?用字符串的indexOf()函数即可返回页数,这样switch就找到了那一页。
通过这几步让就可以让switch成功匹配字符串。举个例子吧(~):

//设置一个字符串变量cmdList作为目录,存放的每个字符串都占9个位
//这样一来,每个字符串的位置都是9的倍数(从0开始计)
//(不够的用空格补,连间隔都算进去,这样是为了方便确定数字符串在哪个位置)

String cmdList = "welcome fasthlp noplayer admhlp usrhlp " +"reqpass passerr logs quis logf " +"noteno cmderr ";String aimStr="reqpass";switch(cmdList.indexOf(aimStr)/9){case 0: ...... //对应welcome break;case 1: ...... //对应fasthlp break;case 2: ...... //对应noplayer break;case 3: ...... //对应admhlp break;......}

从以上程序可以看到,aimStr在目录中第5个位置,所以对应case 5: 这个标签。
0 0
原创粉丝点击