我正在创建一个板球得分跟踪器android应用程序作为在线课程的项目。在该应用程序中,我想显示跑步,检票口和收口。用户输入将有六个按钮:1、2、3、4、6和检票口。

当用户按下按钮时,跑步/检票口和翻车次数将相应更新。但是,为了显示上方,我面临一个问题。

如果您不知道,在板球比赛中,上方有6个球。

在我的应用程序中,游戏限制为5个overs(30个球)。因此,每当按下按钮时,over变量将增加0.1。我希望overs变量在达到1.6时自动更改为2.0。达到2.6时,必须更改为3.0,依此类推,直到达到5.0。

我不知道如何在不使用多个if块的情况下在我的应用程序中实现这一点。
这是我的尝试:

if(overs<5.0){

    if(overs == 1.6){
    overs = 2.1;
    }

    if(overs == 2.6){
    overs == 3.1;
    }

    if(overs == 3.6){
    overs == 4.1;
    }

    else{
    overs += 0.1;
    }
}


我必须在每个按钮方法中使用此代码段,这使整个过程看起来非常难看。

我很好奇,如果不使用java中的多个嵌套if循环,是否有任何方法可以做到这一点。

最佳答案

这可能不是很优雅,但是当满足条件时,您可以增加叠加次数。

if (overs % 1 == .6) // decimal ends as .6
   overs += .5;


由于它是浮点数,因此您可能需要使用epsilon值:

if (Math.abs((overs % 1)-.6) < .0000001)
    overs += .5;
else
    overs += .1;

09-28 04:42