2014-01-23 74 views
2

我需要我的android應用程序中的函數幫助。函數獲得這樣一個雙精度值:0.1234567或123.1234567;我想將其轉換爲字符串,稍後,如果double大於1,它必須返回123.1(如果double爲123.123456),如果double小於0,則它必須返回123(如果double爲0.123456)。目前,我設法將double轉換爲字符串,但我不知道如何做到這一點。在Android中格式化字符串變量

這是我的方法:

public String getFormatDistance(double distance) { 
     String doubleAsText = String.valueOf(distance); 
     if (distance > 0.9) { 
      return doubleAsText; 
     } else { 
      String[] parts = doubleAsText.split("."); 
      String part1 = parts[0]; 
      String part2 = parts[1]; 
      //part2 = part2.split(""); 
      return part2; 
     } 
    } 

這條線顯示的字符串:

TextView fourText = (TextView) row.findViewById(R.id.distance); 
    fourText.setText(getFormatDistance(values.get(position).distance)); 

它返回一個錯誤:

01-23 09:45:48.816: E/AndroidRuntime(8677): java.lang.ArrayIndexOutOfBoundsException: length=0; index=1 

回答

3

使用Pattern.quote()由點到分割字符串符號。

做這樣

String[] parts = doubleAsText.split(Pattern.quote(".")); 

請參閱here如何分割的雙重價值,整數部分和小數部分。

+0

嗨,謝謝你的回答。現在,它運行良好:)現在,我只需要顯示變量'part2'的前三位數字,我該怎麼辦? – Yeray

+1

@Yeray,不客氣。像這樣使用String.substring()part2 = part2.substring(0,3); – Prabhakaran

+0

非常感謝你;) – Yeray

0
if (CharMatcher.is('.').countIn("doubleAsText") > 1) { 
      return doubleAsText; 
     } else { 
      String[] parts = doubleAsText.split("."); 
      String part1 = parts[0]; 
      String part2 = parts[1]; 
      //part2 = part2.split(""); 
      return part2; 
     } 
0

String.split()使用正則表達式,這裏的點.是一個特殊字符。所以你需要逃離Dot,所以你可以用字符點來分割,而不要在正則表達式中使用點作爲特殊(funcional)字符。

String[] parts = s.split("\\."); 
String part1 = parts[0]; 
String part2 = parts[1]; 
+0

嗨,謝謝你的回答,但是我想先將double分解爲整數部分和小數部分,現在它對Prabhakaran非常有效。但是,我只需要顯示我的字符串參數的前三位數字。感謝您的幫助。 – Yeray