2012-11-03 46 views
0

所以我有這樣的功能:掃描儀給出了相同的值2倍,而不是一個

當我使用下面的代碼,我通過球半徑的掃描儀,他確定了 雙重的,應在將它們傳遞到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

return "" + x + y;會將'x'轉換爲字符串,然後附加它,將'y'轉換爲字符串,然後追加,因此將翻倍輸出。

您需要重寫此表達式"" + (x + y),以便在將它轉換爲字符串之前評估您的表達式。

+0

對不起,我不得不返回2個不同的值。所以我的返回必須如下所示:return「variable 1:」+ x +「/ nvariable 2:」+ y; – user1213904