如何更改为案例陈述

时间:2015-11-17 07:24:30

标签: java if-statement switch-statement

我的问题是如何将此代码更改为case语句? 这是我的if语句

if (jarak < 80){
    merah = 255;
    hijau = 255;
    biru = 255;
    alpha = 255;  
}
else if (jarak == 0)
{
    merah = 0;
    hijau = 0;
    biru = 0;
    alpha = 255;
}

我做了一些关于它的工作并且它包含错误。 这是我的案例陈述

if(jarak < 80)
{
    switch(jarak[0]){
    case merah = 255;
        break;    
    }  
}

这是真的吗?

这是我的完整代码。我无法更改if语句到case语句,因为case语句只适用于byte,short,char和int原始数据类型。我正在使用double来声明jarak

 lebar = 256;
 tinggi = 256;
 double jarak = 0;      
 datapixel = new int [lebar * tinggi];

 int nilais=0;

 for (int a = 0; a < tinggi; a++) { 
    for (int j = 0; j < lebar; j++) { 
       int merah = 0; 
       int hijau = 0; 
       int biru = 0; 
       int alpha = 255; 
       jarak = Math.pow(((Math.pow((j - 128), 2)) + (Math.pow((a - 128), 2))), 0.5);

       if (jarak < 80){
           merah = 255;
           hijau = 255;
           biru = 255;
           alpha = 255;
         }
         else if (jarak == 0)
         {
            merah = 0;
            hijau = 0;
            biru = 0;
            alpha = 255;
         }
   }
}

3 个答案:

答案 0 :(得分:2)

if(jarak < 80)
        {
          switch(jarak){
              case 0: 
                  //do whatever when `jarak == 0`
              break;
          }  
        }

这是案件的写法。

答案 1 :(得分:0)

在Java中,switch语句要求case中的具体值,而不是范围。在你的情况下:

  • jarak == 0 - 这个符合switch
  • jarak < 80 - 这个没有

所以你能做的最好的是:

if (jarak < 80) {
    switch (jarak) {
        case 0:  merah = 255;
                 hijau = 255;
                 biru = 255;
                 alpha = 255; 
                 break;
        default: merah = 0;
                 hijau = 0;
                 biru = 0;
                 alpha = 255; 
                 break;  
     }
}

请参阅有关切换案例的文档,以便更好地理解:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

答案 2 :(得分:0)

为了保持代码更清洁,您可以创建一个实用程序类,它将返回可用值,以使其适用于switch语句。

public class JarakUtils {

    public static final enum JarakOutcome { ZERO, LESSER_THAN_80} ;

    public static JarakOutcome getOutcome(int jarak) {
        JarakOutcome outcome;

        if(jarak < 80) {
            outcome = JarakOutcome.LESSER_THAN_80 ;
        } 

       // ... 

        return outcome;
    } 

} 

然后以这种方式使用开关:

switch(getOutcome(jarak)) {
    case ZERO:
        //... 
    break;
    case LESSER_THAN_80:
        //... 
    break;
} 

您将为枚举类型添加默认值。

可能我永远不会使用这种方法,因为这会迫使你编写大量代码来达到相同的结果(通常你会在ifelse语句中写出来)。