Rya*_*les 12 java android if-statement switch-statement
我正在创建一个具有文本图像网格的应用程序,每个应用程序打开一个不同的活动.它工作正常,但只是为设计目的,我想取代我if-else statements与switch statements(我假设我能做到),但它不工作.现在我在每个图像上设置标签的工作代码是:
if(position == 0)
textView.setText(R.string.zero);
else if(position == 1)
textView.setText(R.string.one);
else if(position == 2)
textView.setText(R.string.two);
else if(position == 3)
textView.setText(R.string.three);
else if(position == 4)
textView.setText(R.string.four);
else if(position == 5)
textView.setText(R.string.five);
ect....
Run Code Online (Sandbox Code Playgroud)
我想用:
switch(position)
case 0:
textView.setText(R.string.zero);
case 1:
textView.setText(R.string.one);
case 2:
textView.setText(R.string.two);
case 3:
textView.setText(R.string.three);
case 4:
textView.setText(R.string.four);
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,标签是我定义的最后一个(在我的例子中它将是"四").我也有一个类似的代码,每个对象开始intent与position变量不同但是相反,并使每个意图等于第一个.我的语法错了还是不适用于我的情况?
Sot*_*lis 62
你需要break;在a中的每个语句之后case,否则执行向下流动(所有情况都低于你想要的那个也将被调用),所以你总是得到最后一个案例.
switch(position) {
case 0:
textView.setText(R.string.zero);
break;
case 1:
textView.setText(R.string.one);
break;
case 2:
textView.setText(R.string.two);
break;
case 3:
textView.setText(R.string.three);
break;
case 4:
textView.setText(R.string.four);
break;
}
Run Code Online (Sandbox Code Playgroud)
这是官方教程,解释何时何时不使用break;.
fge*_*fge 16
你需要break;在每个分支之后:
switch (position) {
case 0:
textView.setText(R.string.zero);
break; // <-- here
// etc
}
Run Code Online (Sandbox Code Playgroud)
合法使用switch当你不break存在时,那些被称为堕落; 或者因为你return或throw.:
switch (someNumber) {
case 0:
return 0;
// no need for break here
case 1:
throw new IllegalArgumentException();
// no need to break here
case 2:
System.out.println("Oh, I got two!");
// fall through
case 3:
return 3;
default:
System.out.println("Meh")
// No need to break: last possible branch
}
return -1;
Run Code Online (Sandbox Code Playgroud)
即使你输入2也会返回3.
但是否则你需要break.
这是解决方案.您需要使用break以避免经历每个案例:
switch(position)
case 0:
textView.setText(R.string.zero);
break;
case 1:
textView.setText(R.string.one);
break;
case 2:
textView.setText(R.string.two);
break;
case 3:
textView.setText(R.string.three);
break;
case 4:
textView.setText(R.string.four);
break;
Run Code Online (Sandbox Code Playgroud)
我建议阅读有关switch语句的oracle文档.
在eace案例操作之后,您需要使用break语句.在switch-case语句中,如果你不使用break语句,那么在该特定语句之后的所有情况也将被执行
case 0:
textView.setText(R.string.zero);
break;
Run Code Online (Sandbox Code Playgroud)
不要忘记break;在每个案例之后:像那样:
switch(position){
case 0:
textView.setText(R.string.zero);
break;
case 1:
textView.setText(R.string.one);
break;
case 2:
textView.setText(R.string.two);
break;
case 3:
textView.setText(R.string.three);
break;
case 4:
textView.setText(R.string.four);
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |