繁体   English   中英

Android Java数学逻辑问题

[英]Android Java math logic issue

我想告诉球员得分是否特定。

我目前正在使用什么..

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错误的 ,因此,如果他的score <= 40他也可以得到消息, You scored 1 score <= 4You scored 1 而且我使用score == x,因为我需要在结束时向玩家发送消息,所以他的高分应该是15。

像这样显式排除零:

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分),因为if-else永远不会超过第一个if,否则它将为true。

更好的用法实际上是在用户超过该阈值时循环遍历您的目标分数消息:

int[] targets = {0,1,5,20,50,100}

for (int i : targets) {
 if (score >= i) {
  messagePlayer("You scored " + i + ".")
 }
}

您可以使此代码更具可读性:

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.");

因此,您还需要签入第一个if语句以获取大于零的结果。您可以像这样更改第一个if语句

if(score>0 && score <= 4)

我会稍微修改一下您的结构

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM