如果他获得特定分数,我想给玩家留言。
我目前使用的是什么..
if(score <= 4){
messagePlayer("You scored 1.");
} else if(score <= 19){
messagePlayer("You scored 1.");
messagePlayer("You scored 5.");
} else if(score <= 49){
messagePlayer("You scored 1.");
messagePlayer("You scored 5.");
messagePlayer("You scored 20.");
} else if(score <= 99){
messagePlayer("You scored 1.");
messagePlayer("You scored 5.");
messagePlayer("You scored 20.");
messagePlayer("You scored 50.");
} else if(score >= 100){
messagePlayer("You scored 1.");
messagePlayer("You scored 5.");
messagePlayer("You scored 20.");
messagePlayer("You scored 50.");
messagePlayer("You scored 100.");
}
我想要的分数是:
- 1点
- 5
- 20
- 50
- 100
我的逻辑是100%正确吗?我认为我的第一个score <= 4
错误,所以如果他得到0
他可以还会收到消息You scored 1
。而且我不使用score == x,
,因为我需要在结束时向玩家发送消息,当他完成时,所以他的高分如15。
答案 0 :(得分:3)
像这样明确地排除零:
if(score > 0 && score <= 4){
messagePlayer("You scored 1.");
}
或者更好的是,将边界值存储在数组中并在一个循环中解决问题:
int[] boundaries = { 1, 5, 20, 50, 100 };
for (int i : boundaries) {
if (score >= i) {
messagePlayer("You scored " + i);
}
}
答案 1 :(得分:1)
现在存在的程序将始终告诉用户他们得分为1,只要他们得分至少为1,因为你的if-else永远不会超过第一个if,这将评估为真。
当用户超过该阈值时,更好的用法是将每个消息循环遍历目标分数:
int[] targets = {0,1,5,20,50,100}
for (int i : targets) {
if (score >= i) {
messagePlayer("You scored " + i + ".")
}
}
答案 2 :(得分:1)
您可以使此代码更具可读性:
if(score <= 4)
messagePlayer("You scored 1.");
if(score <= 19)
messagePlayer("You scored 5.");
if(score <= 49)
messagePlayer("You scored 20.");
if(score <= 99)
messagePlayer("You scored 50.");
if(score >= 100)
messagePlayer("You scored 100.");
答案 3 :(得分:1)
所以你还需要检查你的第一个if语句是否高于零结果。你可以改变你的第一个if语句
if(score>0 && score <= 4)
答案 4 :(得分:1)
我会修改你的结构
if( score >0){
messagePlayer("You scored 1.");
}
if(score >4){
messagePlayer("You scored 5.");
}
if(score > 19){
messagePlayer("You scored 20.");
}
if(score > 49){
messagePlayer("You scored 50.");
}
if(score > 99){
messagePlayer("You scored 100.");
}
请注意,我删除了else
语句