我正在尝试创建一个将字节转换为人类可读的JAVA的程序

时间:2019-03-13 00:33:59

标签: java

我正在尝试创建一个将字节转换为人类可读的程序。不幸的是,当我尝试将值格式化为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)

我该如何解决?

1 个答案:

答案 0 :(得分:0)

在您的退货声明return String.format("%s%.2f bytes",size);中 这需要两个参数:%s,它是String的任何类型;和%f,它是十进制数的浮点。您提供的参数太少。如果您打算只使用size,请记住这是一个长号,而不是浮点数。