我正在使用Java switch语句根据调用它的按钮的id为变量分配不同的值。
问题是它总是评估细节。
我认为错误可能在于我如何获得Id(R.java
位),但我做了一些互联网研究,并且找不到“正确”的方法。
这是我的代码(-99
和23
就在那里,所以很明显它是否无效)
public void rootMe(View v){
/* I got rid of some code here so it was shorter */
int mult = -99;
int buttonId = v.getId();
switch(buttonId)
{
case R.id.root2:
mult = 1/2;
case R.id.root3:
mult = 1/3;
case R.id.root4:
mult = 1/4;
case R.id.root5:
mult = 1/5;
case R.id.root6:
mult = 1/6;
default:
mult = 23;
}
答案 0 :(得分:4)
使用swicth
构造,一旦达到case
,即使还有另一个case
语句,也会执行case
以下的代码。< / p>
如果您希望执行停止(退出switch
构造),则必须使用break
语句;最有可能在每个case
块的末尾:
switch(buttonId)
{
case R.id.root2:
mult = 1/2;
break;
case R.id.root3:
mult = 1/3;
break;
case R.id.root4:
mult = 1/4;
break;
case R.id.root5:
mult = 1/5;
break;
case R.id.root6:
mult = 1/6;
break;
default:
mult = 23;
break;
}
这样,当执行与case
语句对应的代码时,它将不再执行与以下case
语句对应的代码,并退出switch
构造
请注意,这不是特定于android的:它只是switch
语句在JAVA中的工作方式;例如:The switch
Statement
答案 1 :(得分:1)
你没有break
。您必须在每个案例后放置一个break语句,以便它不会继续执行和测试案例。 。 。
switch(buttonId)
{
case R.id.root2:
mult = 1/2;
break;
case R.id.root3:
mult = 1/3;
break;
case R.id.root4:
mult = 1/4;
break;
case R.id.root5:
mult = 1/5;
break;
case R.id.root6:
mult = 1/6;
break;
default:
mult = 23;
}
在此处阅读更多内容:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
答案 2 :(得分:1)
这里有一篇很好的文章你可能应该看一下 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html