今天寫了一段測試代碼,以下:java
package socStatistics; import java.io.IOException; import java.util.ArrayList; import java.util.Formatter; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import org.apache.ibatis.io.Resources; import socStatistics.entity.StatisticsResultData; public class StatisticsMain { public static void main(String[] args) { // 最終 Properties prop; try { prop = Resources.getResourceAsProperties("param.properties"); String beginTime = (String) prop.get("beginTime"); String endTime = (String) prop.get("endTime"); List<StatisticsResultData> resultList = Utils .listStatisticResultDatas(beginTime, endTime); List<StatisticsResultData> rawlist = Utils.listStatisticResultDatas("0000", "2459"); System.out.print("原始數據量=" + rawlist.size() + ", 符合" + beginTime + "-" + endTime + "之間的數據量=" + resultList.size()); Formatter f = new Formatter(System.out); f.format(",比例= %.2f" + (double) resultList.size() / rawlist.size() * 100); System.out.println("%"); } catch (IOException e) { e.printStackTrace(); } } }
結果測試時報錯以下:apache
原始數據量=1935, 符合0830-1730之間的數據量=1852,比例= Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '%.2f' at java.util.Formatter.format(Unknown Source) at java.util.Formatter.format(Unknown Source) at socStatistics.StatisticsMain.main(StatisticsMain.java:31)
按照提示,31行發生錯誤,原來是測試
f.format(",比例= %.2f" + (double) resultList.size() / rawlist.size() * 100);這裏的+,應該是逗號。即改爲f.format(",比例= %.2f" ,(double) resultList.size() / rawlist.size() * 100);code
另外,若是想在輸出百分數時直接在後面加上%,如f.format(",比例= %.2f %" ,(double) resultList.size() / rawlist.size() * 100);會報錯:orm
原始數據量=1935, 符合0830-1730之間的數據量=1852Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '%' at java.util.Formatter.checkText(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.util.Formatter.format(Unknown Source) at socStatistics.StatisticsMain.main(StatisticsMain.java:31)
能夠另起一行,System.out.println("%"); ci