java - 如果其他工作,则不切换

标签 java android if-statement switch-statement

<分区>

我正在制作一个应用程序,其中包含带有文本的图像网格,每个图像都会打开一个不同的 Activity 。它工作正常,但只是出于设计目的,我想用 switch 语句 替换我的 if-else 语句(我认为我可以这样做)但是它不起作用。现在我在每张图片上设置标签的工作代码是:

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....

我想使用:

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);    

但是当我这样做时,ever label 是我定义的最后一个标签(在我的例子中它是“四”)。我也为每个对象编写了一个类似的代码,以使用 position 变量启动不同的 intent 但是这样做恰恰相反,使每个 Intent 都与第一个 Intent 相同。我的语法是错误的还是这不适合我的情况?

最佳答案

您需要在 case 中的每个语句之后 break;,否则执行会向下(所有低于您想要的 case 的 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; 
}

这是 official tutorial解释何时使用和何时不使用 break;

关于java - 如果其他工作,则不切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345429/

相关文章:

java - 由注解界定的有界类型参数

Android Google Maps API V2 在发布时不显示 map

android - 在 IOS 上从 Flutter 启动 Whatsapp 时出现问题

java - 这些 if 语句有什么区别?

if-statement - 一般编程 - else 或 else if 为清楚起见

java - EJB + JSF (Primefaces) Maven -> 在 EJB 中使用 primefaces jar -> 在 Jboss、Eclipse 上部署期间出现异常

java - 我如何在java中编写时间戳以便我可以插入mysql

java - Primefaces selectbooleancheckbox 在列中不起作用

android - 优化 GridLayout 的内存使用

java - 两个问题。不添加到数组中的下一个索引,也不从数组中删除