很难在java中使用printf并在eclipse中读取错误

时间:2012-10-04 20:00:46

标签: java printf

public class TryMyMath {

    public static void main(String args[])
    {

        double num = Math.E;
        printTable(num);
    }// end main

    public static void printTable(double num){
        int n = 1;

        for(n = 1;n <= 10; n++)
        {
            num = Math.pow(num, n);
            System.out.printf("%d %lf", n, num);
        }
        round100th(num);

    }
    public static double round100th(double num)
    {
        return Math.round(num*100.)/100.0 ;
    } // end round100th

}

我在java中使用printf有这个问题,所以这是我用printf

得到的错误
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l'
  at java.util.Formatter$FormatSpecifier.conversion(Unknown Source)
  at java.util.Formatter$FormatSpecifier.<init>(Unknown Source)
  at java.util.Formatter.parse(Unknown Source)
  at java.util.Formatter.format(Unknown Source)
  at java.io.PrintStream.format(Unknown Source)
  at java.io.PrintStream.printf(Unknown Source)
  at TryMyMath.printTable(TryMyMath.java:15)
  at TryMyMath.main(TryMyMath.java:7)

当我拿出printf语句时没有任何错误,我是不是以正确的方式使用printf它应该在java中使用?

我也是java和eclipse的新手,所以我不知道这些错误是什么意思。

所以这是我得到的输出

1  2.7182822 7.3890563 403.4287934  26489122129.8434375  13041808783936237000000000000000000000000000000000000.0000006  Infinity7 Infinity8  Infinity9 Infinity10 无穷大

输出直到n = 3我没有看到for循环有什么问题,为什么会发生这种情况?

nvm我看到它有什么问题

5 个答案:

答案 0 :(得分:1)

应该是System.out.printf("%d %f", n, num)l在这里毫无意义。

此外,您的round100th(num);电话无效 - 您是否尝试将数字打印到两位小数?你可以用:

来做到这一点
System.out.printf("%d %.2f", n, num)

答案 1 :(得分:1)

请参阅String Formatter Conversions,没有%l

答案 2 :(得分:0)

我对此并不乐观,但我相信java只需要使用

  

System.out.printf(n +“”+ num)

虽然已经有一段时间了,所以你需要检查一下。请告诉我,如果我错了。我不想留下错误的答案。

答案 3 :(得分:0)

尝试:

System.out.printf("%d %f", n, num);

formatting is described in great in JavaDocs

答案 4 :(得分:0)

问题在于这一行:

  

System.out.printf(“%d%lf”,n,num);

%lf不合适。你的意思是%1f?请注意,前者具有小写“L”而后者具有“1”。尝试使用1,它应该工作。