解决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 ...
随机推荐
- java 两个日期之间的标准工作日(原创)
package control; import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...
- Linked List Sorting (链表)
Linked List Sorting (链表) A linked list consists of a series of structures, which are not necessari ...
- 关于分区技术的索引 index
关于分区技术---索引 Index 一. 分区索引分类: 本地前缀分区索引(local prefixedpartitioned index) 全局分区索引(global partitionedin ...
- shell echo打印换行的方法
echo要支持同C语言一样的\转义功能,只需要加上参数-e,如下所示: [~]#echo "Hello world.\nHello sea" Hello world.\nHello ...
- NSFileManager 沙盒文件管理
文件夹创建,复制,移动,删除,检查是否存在,代码如下: 1.获取沙盒 document 路径,作为文件夹路径的基路径. NSString *document = NSSearchPathForDire ...
- 5.3:从bean的实例中获取对象
5.3 从bean的实例中获取对象 在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean. ...
- 如何将word中上下两行文字对齐?
一.问题来源及描述 本科毕设的时候积累的问题,整理如下. 红头文件下面的署名,上下要对齐. 二.解决办法 经验证,第一次拉标尺要把标尺放在第一行的光标处,为了换行后,再次enter,tab后到与上一行 ...
- PAT-乙级-1036. 跟奥巴马一起编程(15)
1036. 跟奥巴马一起编程(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 美国总统奥巴马不仅呼吁所有人 ...
- hibernate hql 大全
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. ...
- [js综合问题汇总]js窗口关闭事件,表单名称,父窗口子窗口,var变量名
<script type="text/javascript"> window.onbeforeunload = onbeforeunload_handler; //wi ...