2016-05-13 59 views
0

正如標題所示,如果輸入例如是2.1k它應該等於2100,如果它是3.7k它將是3700等等。我有一些代碼如下,我還沒有真正嘗試過什麼,只是想着公式何以是:進行高級號碼計算? 2.1k等於2100等。

String arg = args[0]; 
if(arg.contains("k")) { 
    args[0].replace("k", "000"); 
} 
+1

嗯,那你片斷貼添加一個過米任何零,並且它也不會刪除小數點。 「 – jthomas

+4

」......我沒有真的嘗試過任何東西......「 - 你應該這樣做,然後如果你卡住了,回來問一個關於你遇到的具體困難的問題。 – azurefrog

+3

'.replace'不改變字符串,它返回修改過的字符串。 –

回答

3

你可以檢查arg與「K」結尾,如果它不解析雙值「K」之前,前述每一個字符和乘1000喜歡的東西

String arg = "2.1k"; 
if (arg.endsWith("k")) { 
    int val = (int) (Double.parseDouble(arg.substring(0, arg.length() - 1)) 
      * 1000); 
    arg = String.valueOf(val); 
} 
System.out.println(arg); 

輸出

2100 
+0

謝謝,這工作完美。 –

0

對於k例如這將是:

int count = StringUtils.countMatches(arg, "k");//count the amount of k's 
double decNumber = Double.parseDouble(arg.replace("k", "");//removes all k's and parse to a double 
double finalNumber = decNumber * Math.pow(1000, k);//multiple by 1000^k 

這適用於任何金額AFTER十進制數。

0

正確的方式做,這看起來更像是:

String arg = args[0]; 
     if(arg.contains("k")) { 

      newVal = args[0].replace("k", ""); //just drop the K and be left with a decimal 
      newVal = parseInt(args[0] * 1000); //New value is whatever was passed in times 1000 
     } 
+0

我想我的回答是比Java更多的JavaScript。但你明白了。 – durbnpoisn

+2

字符串是不可變的。 'replace'創建新的字符串,不影響舊字符串。 – Pshemo