RT
求解
求思路
求解
求思路
解决方案 »
- 求助。java的聊天程序怎么实现在线用户列表?~
- 一个关于反射构造方法的问题
- 如何判别string中bo在ap之前
- 帮忙看一下这句程序
- 有研究过Java Mail的朋友请进。。。。
- 各位帮我看看这个程序错在什么地方?
- 在jbuilder 里面能够获取数据库数据,导成.exe文件后就不能获取了,怎么回事啊??
- 我正要学java,现在项目中要在java下实现打印的功能有关图像文件的,我要看什么书?很急
- 一个比较笨的问题:如何用两个Vector对象动态生成一个JTable?及从JTable里取得数据。
- 求个完整java snmp 获取服务器CPU,内存等信息例子
- 为什么JInternalFrame创建不了?
- java 连oracle 空指针异常 帮忙看哈 !!
但是我现在要用,有没有什么变通的方法
或者改用枚举或整数代替字符串?
switch (str) {
case "a": break;
case "b": break;
}换成
switch (str.hashCode()) {
case "a".hashCode(): break;
case "b".hashCode(): break;
}
这算变向的解决问题吧。
或者弄个字典,把要用到的字符串和整数做映射……
ENUM好不过不理解为啥非得用switch... 而且还得用string用switch
public static void main(String[] args) {
char ch = 'B';
int i = ch - 'A';
switch(i) {
case 0:
System.out.println("A");
break;
case 1:
System.out.println("B");
break;
case 2:
System.out.println("C");
break;
default:
System.out.println("Other");
break;
}
}
}
aaa, bbb, ccc;
}public static void main(String[] args) {
String s = "aaa";
E en;
try {
en = E.valueOf(s);
} catch (Exception e) {
en = null;
}
if (en != null)
switch (en) {
case aaa:
System.out.println("111");
break;
case bbb:
System.out.println("222");
break;
case ccc:
System.out.println("333");
break;
default:
break;
}
else
System.out.println("000");
}
字符串->枚举的话可以这样
aaa, bbb, ccc;
}public static void main(String[] args) {
String s = "aaa";
try {
E en = E.valueOf(s);
switch (en) {
case aaa:
System.out.println("111");
break;
case bbb:
System.out.println("222");
break;
case ccc:
System.out.println("333");
break;
default:
break;
}
} catch (Exception e) {
System.out.println("000");
}
}改一下,索性放进try里面去了
switch (str.hashCode()) {
case 1: break; case 2: break;
default:
break;
}
}
常量也行 用Enum主要是Enum的值应该是可以随便定义的吧 大概吧 没用过 就算未来支持了switch(string) 估计用的也很少
如果硬想要改用switch好看点,就把String映射成switch接受的类型或者enum,但这样效率不是下降了吗?
看来还真的比较难控制了, 有点感觉 扯淡一样 用其他的方式去完成 还真不如用if else 来完成
这种方式不一定有上面的提出的方法好,不过可以一试
void propertyChange(String prop, Object oldObj, Object newObj){
}
中怎么写
真要说怎么办,牺牲点空间和效率用字典(Map啊Table啊之类)或者枚举转换也都是办得到的
import java.net.*;
import java.util.*;class Noname13
{
public static void switch_string(String str, Object[] param)
{
for(int i=0;i<param.length;i+=2)
{
if(str.equals(param[i]))
((Runnable)param[i+1]).run();
}
} public static void main(String[] args)
{
System.out.println("Hello World!"); String a = "abc"; switch_string(a, new Object[]{
"a", new Runnable(){public void run(){
System.out.println("a");
}},
"ab", new Runnable(){public void run(){
System.out.println("ab");
}},
"abc", new Runnable(){public void run(){
System.out.println("abc");
}},
});
}
}
若是非要可读性的话,那么楼上有使用hashCode的应该是不错的选择。
但是很多,很繁琐,
如果你要在不使用 jdk 1.7的情况下在switch用这个符号的还是用hashCode吧,比较方便点,但是也可能碰撞。。