黑马程序员技术交流社区
标题:
关于switch括弧内数据类型的疑问
[打印本页]
作者:
李春阳
时间:
2012-6-6 13:26
标题:
关于switch括弧内数据类型的疑问
本帖最后由 李春阳 于 2012-6-6 13:27 编辑
关于switch括弧内参数的疑问
相信大家经常使用if语句,但是当连续使用if...else if....else if...的时候,我们就会想到用switch
但是switch有一个很纠结的地方,我发现有的数据类型可以用,有的不可以。。
就去查了下标准用法,发现switch语句的判断条件只接受int,byte,char,short。。其他都不行!!!
那我非要~用其他类型的呢,比如String。。。
求助,不要换其他方法- - 我就是想用switch!
作者:
吴小铁你好
时间:
2012-6-6 13:35
你可以用强转啊,把其他类型转换为那四种类型,在Integer中有转换int类型的方法,同理在Character中有转换为char的方法。,例如:你要用String “abc”,可以用int a=Integer.parseInt(abc);就把字符串转换为int了,就可以用a作为while条件。
作者:
张洁
时间:
2012-6-6 13:35
switch()里可以放int,byte,short,char
5.0之后就可以放枚举(enum)
这是因为byte,short,char,枚举(enum),他们会自动转换为int类型
所以~~最后放的还是int类型.
JDk7.0之后就可以放String类型的了。
对于String,可以通过定义枚举来实现的,将字符串作为枚举。
作者:
王超
时间:
2012-6-6 13:46
是的 。switch只能针对基本数据类型使用,这些类型包括int和string等。对于其他类型,则必须使用if语句。
但如果真的想要使用,可以通过定义枚举来实现的。将字符串作为枚举,然后通过toDay方法返回的是一个int的值。这样就可以让switch接受String的条件了。如代码:
作者:
王超
时间:
2012-6-6 13:47
public enum Day
{
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY,
NOVALUE;
public static Day toDay(String str)
{
try {
return valueOf(str);
}
catch (Exception ex) {
return NOVALUE;
}
}
}
main:方法体测试
Scanner s=new Scanner(System.in);
String day=s.next();//输入的字符串
switch(Day.toDay(day.toUpperCase())){
case SUNDAY:
System.out.println("星期天");
break;
case MONDAY:
System.out.println("星期一");
break;
case TUESDAY:
System.out.println("星期二");
break;
}
复制代码
作者:
武剑峰
时间:
2012-6-6 14:51
三楼很强大,基本概念都规定好了,虽然楼主想实现但也不外乎以下说明:以下是复制
switch()里可以放int,byte,short,char
5.0之后就可以放枚举(enum)
这是因为byte,short,char,枚举(enum),他们会自动转换为int类型
所以~~最后放的还是int类型.
JDk7.0之后就可以放String类型的了。
对于String,可以通过定义枚举来实现的,将字符串作为枚举。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2