我正在尝试创建一个将字节转换为人类可读的程序。不幸的是,当我尝试将值格式化为2个十进制数字时,我总是收到错误消息。
public class Challenge
{
public static String formatAsMemory(long size) {
long limit = 10 * 1024;
long limit2 = limit * 2 - 1;
if(size < 0) {
size = Math.abs(size);
}
if(size <=1023) {
return String.format("%s%.2f bytes",size);
} else {
size = Math.round((double) size / 1024);
if (size < limit2) {
return String.format("%s%.2f Kb",size);
} else {
size = Math.round((double)size / 1024);
if (size < limit2) {
return String.format("%s%.2f Mb",size);
} else {
size = Math.round((double)size / 1024);
if (size < limit2) {
return String.format("%s%.2f Gb",size);
} else {
size = Math.round((double)size / 1024);
return String.format("%s%.2f Tb",size);
}
}
}
}
}
}
我收到的错误:
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 java.lang.String.format(Unknown Source) at Challenge.formatAsMemory(Challenge.java:12) at Main.main(Main.java:5)
我该如何解决?
答案 0 :(得分:0)
在您的退货声明return String.format("%s%.2f bytes",size);
中
这需要两个参数:%s
,它是String的任何类型;和%f
,它是十进制数的浮点。您提供的参数太少。如果您打算只使用size
,请记住这是一个长号,而不是浮点数。