如何更改为案例陈述

how to change to case 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;
         }
   }
}
if(jarak < 80)
        {
          switch(jarak){
              case 0: 
                  //do whatever when `jarak == 0`
              break;
          }  
        }

案例是这样写的

在 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;  
     }
}

为了更好地理解,请参阅有关 switch case 的文档:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

只是为了让代码更简洁一些,您可以创建一个实用程序 class,它将 return 可用值以使其与 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 语句中编写的相同结果)。