0
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 无穷17 无穷8 无穷9

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

nvm 我看到它有什么问题

4

5 回答 5

1

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

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

System.out.printf("%d %.2f", n, num)
于 2012-10-04T20:04:21.210 回答
1

请参阅String Formatter Conversions,没有%l

于 2012-10-04T20:05:07.277 回答
0

我对此并不积极,但我相信你只需要使用 java

System.out.printf(n + " " + num)

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

于 2012-10-04T20:04:34.683 回答
0

尝试:

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

格式在 JavaDocs 中有很好的描述。

于 2012-10-04T20:05:17.817 回答
0

问题在于这一行:

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

%lf 不合适。你是说%1f吗?请注意,前者有一个小写的“L”,而后者有一个“1”。用 1 试试,它应该可以工作。

于 2012-10-04T20:06:14.017 回答