java.util.MissingFormatArgumentException

原创
2016/05/31 10:23
阅读数 98

今天写了一段测试代码,如下:

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();
		}
	}

	

}

结果测试时报错如下:

 原始数据量=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);

另外,如果想在输出百分数时直接在后面加上%,如f.format(",比例= %.2f %" ,(double) resultList.size() / rawlist.size() * 100);会报错:

原始数据量=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("%"); 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部