黑马程序员技术交流社区

标题: switch语句错误! [打印本页]

作者: 贾永长    时间: 2013-6-27 13:16
标题: switch语句错误!
switch语句中表达式的值必须是整数或字符型。整数型包括:byte、short、int、long。
那为什么我用了long型会报错呢?!
见代码:
  1. public class Demo3
  2. {
  3. public static void main(String[] args)
  4. {
  5.   long x=2,y=1;     ----------------------------》定义long型变量    :报错!
  6.   switch(x+y)         ---------------------------》x+y也是long型
  7.   {
  8.    case 1:
  9.     System.out.println(x+y);
  10.     break;
  11.    case 3:
  12.     System.out.println(x+y);
  13.    case 0:
  14.     System.out.println(x+y);
  15.     break;
  16.    default:
  17.     System.out.println("没有"+(x+y));
  18.        break;
  19.   }
  20. }
  21. }
  22. <p> </p>
复制代码

作者: 张承富    时间: 2013-6-27 13:39
小弟,不能是long
switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
jdk1.5判断条件可以接收枚举 enum
作者: 李晓峰    时间: 2013-6-27 13:45
在switch(x)中,x只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。但是long类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它不能作用于swtich语句中。



作者: 以防万一    时间: 2013-6-27 13:49
1、switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.所以long类型在这里会报错
2、long类型 应该写为long x=2l,y=1l,后面要加上l
作者: 贾永长    时间: 2013-6-27 14:21
咦,我盗了太阳 发表于 2013-6-27 13:49
1、switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.所以long类型在这里会报错
2、long ...

原来如此啊 你的讲解挺详细的 还给我纠正了 要加上l  谢了! 谢谢大家了!:handshake
作者: 王涵晴    时间: 2013-6-27 14:24
特点:
1、被选择的表达式的值,只接收四中类型 byte,short,int,char
2、在switch当中这些case是没有顺序的,但还是从第一个具体答案先执行
3、switch的结束有两种方式,第一种方式是执行到break就结束了;


{:soso_e176:}这是毕老师讲的switch语句的三个特点,switch语句能接收的类型里面没有long类型,
{:soso_e176:}要认真哦,加油、

作者: 王涵晴    时间: 2013-6-27 14:26
switch语句的三个特点:
1、被选择的表达式的值,只接收四中类型 byte,short,int,char
2、在switch当中这些case是没有顺序的,但还是从第一个具体答案先执行
3、switch的结束有两种方式,第一种方式是执行到break就结束了;第二种方式是执行到switch语句的大括号,然后结束
    如果执行完default后没有碰到break,也没有碰到大括号,则继续往下执行;

{:soso_e176:}这是毕老师讲的switch语句的三个特点,switch语句能接收的类型里面没有long类型,
{:soso_e176:}要认真哦,加油、

作者: 贾永长    时间: 2013-6-27 14:30
王涵晴 发表于 2013-6-27 14:26
switch语句的三个特点:
1、被选择的表达式的值,只接收四中类型 byte,short,int,char
2、在switch当中 ...

恩恩,switch语句的三个特点记住了 认真加油! 谢了:handshake
作者: 以防万一    时间: 2013-6-27 14:37
贾永长 发表于 2013-6-27 14:21
原来如此啊 你的讲解挺详细的 还给我纠正了 要加上l  谢了! 谢谢大家了!  ...

不用谢,咱们都是黑马家的人嘛,既然都是黑马家的,就是一家人咯

嘿嘿,一家人,不用谢

偷偷告诉你

我也是正在努力成长中的菜鸟一枚

加油!
作者: 郭伟杰    时间: 2013-6-28 11:40
错!!!     switch    里面的Case值必须为   int    型
作者: ヾMyHeartIsDead    时间: 2013-6-28 18:06
switch的判定里不能用long类型,你可以试试int,byte,char,short这些类型
作者: 万琪    时间: 2013-6-28 18:46
switch 只支持int,byte,char,shor,,1.7以后,,支持了string  ,也算是模仿C#了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2