解决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 ...
随机推荐
- 1021.Deepest Root (并查集+DFS树的深度)
A graph which is connected and acyclic can be considered a tree. The height of the tree depends on t ...
- Redhat 显示系统版本号和内核版本号
1./etc/issue 和 /etc/redhat-release都是系统安装时默认的发行版本信息,通常安装好系统后文件内容不会发生变化.[root@rac1 mysql]# cat /etc/is ...
- ActiveMQ中Session设置的相关理解
名词解释: P:生产者 C:消费者 服务端:P 或者 ActiveMQ服务 客户端:ActiveMQ服务 或者 C 客户端成功接收一条消息的标志是这条消息被签收.成功接收一条消息一般包括如下三个阶段: ...
- iOS 深复制&浅复制
1.无论是深复制还是浅复制,被复制的对象类型是不变的.此对象类型具有什么功能就具有什么功能,不会因为自行修改了返回对象的指针类型而改变. 比如: 这里的str和str1的值和指针地址完全一 ...
- 懒惰的JY--关于遍历
先上题: [问题描述] 众所周知,JY的百度搜索算法已经练的炉火纯青,任何搜索题都能0.000ms出解. 不幸的是,JY遇到了一道百度搜索算法解决不了的题目,题目是这样的: 给定N个数A[1] A[2 ...
- bnu 4351 美女来找茬(水水)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4351 [题意]:用最小的矩形框,框住像素点差超过5的点. [题解]:求坐标x,y最大最小值 [cod ...
- 这是我用Microsoft Word 2010 直接发布的测试用博客
目的:如题所示. 那么先试试拷贝一段网页内容,发布后观察各种格式的显示效果如何. 下面的文字来自中国网新闻,地址是http://news.china.com.cn/2015-10/23/conte ...
- 常见的仿Flash图片轮播效果
现在基本在很多网站上都能看到轮播效果,虽然有点烂大街的赶脚,但是这个效果确实很好看,很时尚,今天分享下代码相对较少的轮播框架,望采纳 . ①向左滑动: 思路: 将几个图片用分别用几个 li 包住,并且 ...
- c++ 16 this 和 继承 及继承机制中的构造函数 与 析构函数
#include <iostream> #include <string> using namespace std; class Animal { public: Animal ...
- ExtJS4.2学习(11)可拖放的表格(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html --------------- ...