回答
感谢您的帮助!
我正在为我的AP计算机科学课程编写一些代码,我想知道是否有更有效的方法来做到这一点。该方法非常冗长且冗余。我将非常感谢您所做的改进的解释!
public void setColor(){
if(sequenceNum == 0){
myColor = Color.RED;
}
if(sequenceNum == 1){
myColor = Color.ORANGE;
}
if(sequenceNum == 2){
myColor = Color.YELLOW;
}
if(sequenceNum == 3){
myColor = Color.GREEN;
}
if(sequenceNum == 4){
myColor = Color.BLUE;
}
if(sequenceNum == 5){
myColor = Color.MAGENTA;
}
}
答案 0 :(得分:5)
switch语句是一个想法,但如果序列号密集,我会使用查找表:
final Color[] myColors = {Color.RED, Color.ORANGE, Color.YELLOW, ...};
myColor = myColors[sequenceNum];
在检查范围sequenceNum
之后
请注意,除了第一个else
之外,原始代码应该在if
之前$(this).text(full_text);
。比赛结束后重新测试没有意义。
答案 1 :(得分:3)
你可以做到
Color[] colors = {Color.RED, Color.ORANGE, Color.YELLOW...};
myColor = colors[sequenceNum];
答案 2 :(得分:2)
Java switch语句是您正在寻找的:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
switch (sequenceNum) {
case 0:
myColor = Color.RED;
break;
case 1:
myColor = Color.ORANGE;
break;
....SNIP...
}
答案 3 :(得分:1)
public static Color[] MAP_SEQNUM_TO_COLOR = {
Color.RED,
Color.ORANGE,
Color.YELLOW,
Color.GREEN,
Color.BLUE,
Color.MAGENTA
};
public void setColor(){
if( (0 <= sequenceNum) && (sequenceNum <= 5)) {
myColor = MAP_SEQNUM_TO_COLOR[sequenceNum];
}
}
免责声明:未经测试,最好将其视为伪代码。我在C#领域比在Java方面更活跃,但是这个想法应该很清楚。
答案 4 :(得分:0)
使用switch
switch ( sequenceNum ) {
case 0:
// Do something
break;
case 1:
// Do something else
break;
default:
// Do a default something
break;
}
答案 5 :(得分:0)
public void setColor(){
switch(sequenceNum){
case 0:
myColor = Color.RED;
break;
case 1:
myColor = Color.ORANGE;
break;
case 2:
myColor = Color.YELLOW;
break;
case 3:
myColor = Color.GREEN;
break;
case 4:
myColor = Color.BLUE;
break;
case 5:
myColor = Color.MAGENTA;
break;
}
}
但这也很丑陋Reimeus提供的答案更优雅,只需确保检查0&lt; = sequenceNum&lt; 5以避免获得arrayoutofboundsexception。我猜你正在学习,所以你应该查看维基以获取有用的资源:https://stackoverflow.com/tags/java/info。有关控制流的更多信息,请参阅javadoc:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html
祝你好运答案 6 :(得分:-1)
如果通过&#34;减少&#34;如果&#34;语句&#34;你的意思是字面意思,然后你可以使用一个开关,但这相当于代码运行时执行的类似测试序列。另一方面,如果您真正想要的是减少测试量,那么更清晰的解决方案是使用数组(正如其他人已经建议的那样),特别是因为您的示例代码暗示每种颜色都与整数。