0

我有一个 10 场平均圈数计算器。然而,在测试中,有人说他们通常只在练习中跑 X 圈,而不是 10 圈(比如说 7 圈)。

我想我可以使用 if 语句,但至少有 10 个语句和一堆笨拙的代码,而且我不确定数组/switch 语句是否准确。我认为所有这些都是可能的,但是我的经验水平很低,还没有完全理解这些有用的工具。

当前代码:

double tenLapAvgVar = ((lap1Var + lap2Var + lap3Var + lap4Var + lap5Var + lap6Var + lap7Var + lap8Var + lap9Var + lap10Var) / 10);

因此,基本上,如果有人将一个或多个字段留空,我想根据填充的字段计算平均值,而不是 10(如果他们将 3 个字段留空,例如,基于 7 计算)。你们能提供的任何帮助将不胜感激,谢谢!

4

2 回答 2

1

Maybe it would be better if you used an array instead of 10 different variables.
Then you can use a for statement and initialize them to 0, afterwords let the user fill the array and count how many are not zero.
Finally sum up all the array and divide by the count you previously calculated.

于 2012-06-22T16:30:13.783 回答
1

你可以有一个ArrayList<EditText>对象和一个方法来迭代它并将值相加。就像是:

    public double getLapAverage()
    {
    int noOfCompletedLaps = 0;

    double lapAve = 0;
    double lapsTotal = 0;    

    for(EditText text : textBoxes)
    {
       if(text.getText().toString().length() > 0)
       {
          //psuedo code, and assuming text is numerical
          lapsTotal += Double.parse(text.getText().toString());
          noOfCompletedLaps++;
       }
    }

    if( noOfCompletedLaps > 0)
    {
       lapAve = lapsTotal / noOfCompletedLaps;
    }

 return lapAve;
 }
于 2012-06-22T16:36:22.063 回答