0

所以我有这个功能:

当我使用下面的代码时,我将球体半径传递给扫描仪,他会识别双精度并应将它们传递给 toRound 函数。

    String outputDoubles = " double one: 190.234567 and double two: 370.03245 "; 

    Scanner doubles = new Scanner(outputDoubles);
    doubles.useDelimiter("[^\\p{Alnum},\\.-]");
    while(true) {
        double takeDouble;

        if (doubles.hasNextDouble()) {
            takeDouble = doubles.nextDouble(); // takedouble
            System.out.println(toRound(takeDouble));

        }

        if (doubles.hasNext()) {
            doubles.next();


        }
        else {
            break;
        }

    } 

toRound 在下面:

static String toRound (double number) {
    double x = number; // nog fixen
    System.out.println(" \n");
    double y = number; 
    return "" + x + y;
}    

问题是它不返回: 190.234567 但它返回: 190.234567190.234567190 所以它在彼此之后返回 2 次。

有没有办法解决这个问题,我已经尝试了几个小时不同的东西,但无法让它工作。

4

1 回答 1

4

return "" + x + y;将“x”转换为字符串,然后附加它,将“y”转换为字符串,然后附加,因此输出加倍。

您需要重写此表达式"" + (x + y),以便在将其转换为字符串之前评估您的表达式。

于 2012-11-03T16:20:50.527 回答