解决java switch……case不能匹配字符串的问题
java1.7已经支持了匹配字符串
方案1.
enum Animal { dog,cat,bear; public static Animal getAnimal(String animal){ return valueOf(animal ); } } public class Client { public void caseAnimal(String animal){ switch(Animal.getAnimal(animal)){ case cat: System.out.println("this is a cat"); break; case dog: System.out.println("this is a dog"); break; case bear: System.out.println("this is a bear"); break; } } public static void main(String[] args) { Client client = new Client(); client.caseAnimal("cat"); } }
方案2
enum Seasons{ SPRING,SUMMER,AUTUMN,WINTER } public class TestMultiInterface{ public static void main(String[] args){ Seasons str=Seasons.SPRING; switch(str.ordinal()){ case 0: System.out.println(str.toString()); break; case 1: System.out.println(str.toString()); break; default: System.out.println("没找到"); } } }
方案3
public void switchCase() { Map<String,Integer> map=new HashMap<String, Integer>(); map.put("中国", 1); map.put("美国", 2); map.put("英国", 3); map.put("法国", 4); String str="中国"; switch(map.get(str)) { case 1: System.out.println("中国"); break; case 2: System.out.println("美国"); break; case 3: System.out.println("英国"); break; case 4: System.out.println("法国"); break; default: System.out.println("default"); } }
方案4
String str1 = "aa"; String[] str2 = {"bb", "aa", "cc", "aaa"}; for (int i = 0; i < str2.length; ++i){ switch (str1.compareTo(str2[i])) { case 0: System.out.println("OK"); break; default: System.out.println("Error"); break; } }
方案5
public class Client { public Client(String animal) { //使用String的hasCode取得字符串的哈希码,此方法要保证哈希码不重复 switch (animal.hashCode()) { case 98262: System.out.println("this is a cat"); break; case 99644: System.out.println("this is a dog"); break; case 3019700: System.out.println("this is a bear"); break; } } public static void main(String[] args) { Client client = new Client("bear"); }
方案6 如果是在使用简单工厂设计模式,可以考虑利用java反射技术代替switch
public static UserDao createUser(){
Animal animal=null;
try {
iu=(Animal) Class.forName(Animal接口下子类的完整类名).newInstance();
}catch (Exception e) {
e.printStackTrace();
}
return animal; }
以上方案,有的是从网上收集来的,有的是自己原创的,因为时间过长,已经不记得从哪个地方摘抄下来的,没有注明转载的地方,十分抱歉!
解决java switch……case不能匹配字符串的问题的更多相关文章
- switch……case不能匹配字符串的方法 .xml
pre{ line-height:1; color:#d1653c; background-color:#000000; font-size:16px;}.sysFunc{color:#566d68; ...
- Java switch case和数组
Java switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch case 语句格式: switch(express ...
- Java-Runoob:Java switch case
ylbtech-Java-Runoob:Java switch case 1.返回顶部 1. Java switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等 ...
- BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符
问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...
- Java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch(expression){ case value : //语句 break; //可选 ca ...
- Java switch case语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch case 语句语法格式如下: switch(expression){ case value : ...
- java中使用正则表达式匹配字符串
在Java中使用正则表达式去匹配相应的字符串: String importFileRole = "(import)\\s*[a-zA-Z0-9_<>.]+\\;";// ...
- java学习之—栈匹配字符串符号
/** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/ public class StackR { private int ...
- java switch case 枚举类型的反编译结果
package com.example.demo; import java.io.PrintStream; // Referenced classes of package com.example ...
随机推荐
- Qt+MinGW+OpenCV开发环境在win7系统下的搭建(最新20140423)
1 搭建环境 (1)联想Y470笔记本电脑,win7操作系统 (2)Qt 5.2.1 Open Source :(Qt Online installer for Window(9MB),即下载页面最上 ...
- div中加入iframe,可以实现Ajax的功能
div中加入iframe,可以实现Ajax的功能,如果查询的时候,比如说城市的选择,用Ajax去实现, 在.net 可以考虑用UpdatePanel,但是点击了查询刷新表格(表格需要重新刷新加载,非纯 ...
- WPF常用数据绑定控件集合
1.怎么用ListView控件把XML中的数据在界面上显示出来? <?xml version="1.0" encoding="utf-8" ?> & ...
- Sambar,实现Linux和Windows共享
我下载的是tar的jar包,不是rpm,rpm就不多说了.目的是让Windows能够共享Linux系统的文件夹 1.进入到source文件夹: 2../configure->make->m ...
- IOS成长之路-调用照相机和相册功能(转)
转载自:http://blog.csdn.net/like7xiaoben/article/details/8465237 //先设定sourceType为相机,然后判断相机是否可用(ipod)没相机 ...
- iOS 的 Gif 渲染引擎 FLAnimatedImage-b
公司的项目有个首页加载一张2M左右的git图,刚做的时候是使用的SDWebImage里面的方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name; ...
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
升级vs2010到vs2012,突然发现build出来的应用程序无法运行,提示“不是有效的 win32 应用程序” or “not a valid win32 application”. 参考CSDN ...
- Recommender Systems 基于知识的推荐
前两章的协同过滤和就内容的推荐都建立在“大量数据”的基础上,运用概率方法来进行计算和预测.不过,在现实生活中,有些物品,如:汽车.房屋.计算机,用户不会频繁的消费.如何在这种情况下对用户进行推荐? 这 ...
- uva 10739
dp 只有三个操作 当str[i] != str[j] 时 dp(i, j) = min(dp(i+1, j), dp(i+1, j-1), dp(i, j-1)) #include <ios ...
- linux pts/0的含义
pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1.比如用who命令查询当前登录的用户,可以看到每个用户的TTY设备 ...