Error处理:Java switch case 报错:case expressions must be constant expressions

本文介绍了一种常见的Java编程错误——在switch-case结构中使用非常量表达式作为case标签。通过一个具体例子展示了如何通过将变量声明为final来解决此问题。

Java switch case 报错:case expressions must be constant expressions 


遇到个小问题,使用switch case 时报错: case expressions must be constant expressions。平时使用java的switch case 时并没有过多在意其值的问题,今天一不留神就爆出之前不留意的问题,由此也说明:问题无大小,一直没有出现问题的技术点,并不一定是已经完全掌握的技术点。以后学习开发中切记。


问题如下:

声明的的变量:

    public static  int MENU_LEVEL_TOP = 0;//处于IDLE界面
    public static  int MENU_LEVEL_ONE = 1; //处于一级菜单状态
    public static  int MENU_LEVEL_TWO = 2; //处于二级菜单状态
    public static  int MENU_LEVEL_THREE = 3;//处于三级菜单状态

使用处:

    	switch(mCurrentMenuLevel){
    	case MENU_LEVEL_TOP:    		
    		break;
    	case MENU_LEVEL_ONE:
    		break;
    	case MENU_LEVEL_TWO:
    		break;
    	default:
    		break;
    		
    	}

eclipse 在case处报错case expressions must be constant expressions (CASE表达式必须是常量表达式)

    

根据报的错误,知道问题根源:case后面必须跟常量。

因此这个问题就比较好解决:将声明的变量声明为final。

更改如下:

public static final int MENU_LEVEL_TOP = 0;//处于IDLE界面
    public static final int MENU_LEVEL_ONE = 1; //处于一级菜单状态
    public static final int MENU_LEVEL_TWO = 2; //处于二级菜单状态
    public static final int MENU_LEVEL_THREE = 3;//处于三级菜单状态


C语言中,以下( )是合法的字符常量。 A. 'A' B. 'z' C. '0' D. '$' E. "a" 分数 1 作者 颜晖 单位 浙大城市学院 对于以下两个程序段,下列叙述正确的是( )。 A. 在程序段1和程序段2中,语句y = x + 1;的执行条件皆为满足x<1。 B. 在程序段1和程序段2中,语句y = x + 1;的执行条件皆为满足x<2。 C. 在程序段1中,语句y = x + 2;的执行条件是满足x>=2。 D. 在程序段1中,语句y = x + 2;的执行条件是满足x>=1且x<2。 E. 在程序段2中,语句y = x + 2;的执行条件是满足x>=2。 F. 在程序段2中,语句y = x + 2;的执行条件是满足x>=1且x<2。 / * 程序段1 */ if (x < 2){ if (x < 1){ y = x + 1; } }else{ y = x + 2; } / * 程序段2 */ if (x < 2){ if (x < 1){ y = x + 1; }else{ y = x + 2; } } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,选项( )与以下程序段不等价。 if (x < 2){ if (x < 1) y = x + 1; }else y = x + 2; A. if(x >= 2) y = x + 2; else if (x < 1) y = x + 1; B. if (x < 2) if (x < 1) y = x + 1; else y = x + 2; C. if (x < 2) { if (x < 1){ y = x + 1; }else{ y = x + 2; } } D. if (x < 2) if (x < 1) y = x + 1; else; else y = x + 2; 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,选项( )与以下程序段等价。 switch (ch){ case '-': minus++; break; case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : case '8' : case '9' : digit ++;break; default: other ++; break; } A. if(ch == '-'){ minus++; }else if(ch >= '5' && ch <= '9'){ digit ++; }else { other ++; } B. switch (ch){ default: other ++; break; case '-': minus++; break; case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : case '8' : case '9' : digit ++;break; } C. if(ch == '-'){ minus++; }else if(ch >= '0' && ch <= '9'){ digit ++; }else { other ++; } D. switch (ch){ case '0' : case '1' : case '2' : case '3' : case '4' : case '-': minus++; break; case '5' : case '6' : case '7' : case '8' : case '9' : digit ++;break; default: other ++; break; } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,选项( )与以下程序段不等价。 switch(op){ case '+': printf("%d", value1 + value2); default: printf("Error"); case '-': printf("%d", value1 - value2); } A. if(op == '+'){ printf("%d", value1 + value2); printf("Error"); }else if(op != '-'){ printf("Error"); } printf("%d", value1 - value2); B. if(op == '+'){ printf("%d", value1 + value2); printf("Error"); printf("%d", value1 - value2); }else if(op == '-'){ printf("%d", value1 - value2); }else { printf("Error"); printf("%d", value1 - value2); } C. if(op == '+'){ printf("%d", value1 + value2); }else if(op == '-'){ printf("%d", value1 - value2); }else { printf("Error"); } D. switch(op){ case '+': printf("%d", value1 + value2); case '-': printf("%d", value1 - value2); default: printf("Error"); } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,选项( )与以下程序段不等价。 switch(choice){ case 1: price = 3.0; case 2: price = 2.5; default: price = 0.0; } A. price = 0.0; B. switch(choice){ default: price = 0.0; case 2: price = 2.5; case 1: price = 3.0; } C. price = 0.0; switch(choice){ case 1: price = 3.0; case 2: price = 2.5; } D. if(choice == 1){ price = 3.0; price = 2.5; price = 0.0; }else if(choice == 2){ price = 2.5; price = 0.0; }else{ price = 0.0; } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,以下()是合法的switch语句。 A. switch(op){ default: printf("Error\n"); break; } B. switch(op){ case '*': printf("%d\n", value1 * value2); break; case '+': printf("%d\n", value1 + value2); break; case '-': printf("%d\n", value1 - value2); break; case '*': printf("%d\n", value1 * value2); break; default: printf("Error\n"); break; } C. switch('/'){ case '*': printf("%d\n", value1 * value2); break; case '-': printf("%d\n", value1 - value2); break; case '+': printf("%d\n", value1 + value2); break; default: printf("Error\n"); break; } D. switch(op+1){ default: printf("Error\n"); break; case '*': printf("%d\n", value1 * value2); break; case '+': printf("%d\n", value1 + value2); break; } E. switch(op){ case op == '+': printf("%d\n", value1 + value2); break; default: printf("Error\n"); break; } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,以下()是合法的switch语句。 A. switch(choice){ case 1: price = 3.0; break; case 2: price = 2.5; break; case 3: price = 4.0; break; case 4: price = 3.5; break; case 1: price = 3.0; break; default: price = 0.0; break; } B. switch(choice){ case 1: price = 3.0; break; case 2+2: price = 3.5; break; } C. switch(9){ case 3: price = 4.0; break; case 2: price = 2.5; break; } D. switch(choice* choice+1){ default: price = 0.0; break; case 2: price = 2.5; break; } 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,以下()是合法的C语句。 A. if ( n <= 10 ); B. switch ( k ) { case 1: printf("one"); break; case 2: printf("two"); break; case 1: printf("one"); break; default: printf("zero"); break; } C. switch ( k%2 ) { default: printf("zero"); break; case 1: printf("one"); case 1+1: printf("two"); } D. n = 10; switch ( k ) { case n%3: printf("one"); case n%4: printf("two"); default: printf("zero"); } 分数 1 作者 颜晖 单位 浙大城市学院 判断ch是数字字符的C语言表达式是( ) 。 A. '0' <= ch <= '9' B. ch >= '0' && ch <= '9' C. ch >= '1' && ch <= '10' D. ! (ch < '0' || ch > '9') 分数 1 作者 颜晖 单位 浙大城市学院 设变量已正确定义,以下程序段( ) 的功能是交换变量x和y的值。 A. temp = x; x = y; y =temp; B. x = y; y = x; C. y = x; x = y; D. x = x + y; y = x - y; x = x – y;
最新发布
10-16
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JerryHe

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值