潜水双打时得到小数

时间:2014-09-16 02:27:45

标签: java formatting double

我写了这个方法来找到一个字符串中的令牌长度。我很难从这个师(两个双打)中获得决定。

public static double averageTokenLength (Scanner s)
{
    String word="";
    int words = 0;
    int length = 0;
    double average = 0;

while (s.hasNext())
{
    word = s.next();
    words++;
    length = length + word.length();    
    average = (length/ words);

}

return average;

教授给出的测试方法表明"预期; 3.66666666666667,但是3.0。如何让我的代码显示结果?

3 个答案:

答案 0 :(得分:1)

尝试:

length * 1.0 / words

否则它会进行整数之间的除法,例如7/3会给出2,余数为1。

答案 1 :(得分:1)

其他答案的替代方法是对其中一个参数进行显式转换,如下所示:

(double)length/words;

这是一些额外的字符,但它更清楚你正在做什么,如果你或其他人稍后查看代码,这可能会有用。

答案 2 :(得分:0)

您应该使用length*1.0/words代替