如何更改为案例陈述
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 语句中编写的相同结果)。
我的问题是如何将此代码更改为 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 语句中编写的相同结果)。