Android Java数学逻辑问题

时间:2014-05-16 15:52:02

标签: java android

如果他获得特定分数,我想给玩家留言。

我目前使用的是什么..

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。

5 个答案:

答案 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语句