我的问题是如何将此代码更改为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;
}
}
}
答案 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语句中写出来)。