今天写了一段测试代码,以下: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