java.util.IllegalFormatConversionException: f != java.lang.Integer

Ros*_*sie 5 java format string-formatting java-8

我正在尝试创建一个简单的java程序,该程序读取浮点数,使用欧拉数方程计算它,然后将结果从double转换为int。我可以让它编译而不会出现错误,但在输入浮点数后出现错误:

\n
nB = Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer\n    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)\n    at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)\n    at java.util.Formatter$FormatSpecifier.print(Unknown Source)\n    at java.util.Formatter.format(Unknown Source)\n    at java.io.PrintStream.format(Unknown Source)\n    at java.io.PrintStream.printf(Unknown Source)\n    at Ex4.main(Ex4.java:16)\n
Run Code Online (Sandbox Code Playgroud)\n

它只有几行代码,我刚刚创建了一个运行良好的类似程序,所以我不明白这里出了什么问题!我认为这可能与欧拉数上的行有关,因为我还没有完全理解所有数学函数,但我在以完全相同的方式使用 \xcf\x80 之前就很好了。还是因为最后的转换步骤错误?抱歉,如果这是非常明显的事情,我已经尽力调试它很多次了,但每当我更改某个部分时,我认为这可能是问题所在,我最终会遇到更多错误。这是代码:

\n
import static java.lang.Math.*;\nimport java.util.Scanner;\n\nclass Ex4\n{\n    public static void main( String [ ] args)\n    {\n        Scanner input = new Scanner(System.in);         //import scanner and ask user to input number\n        System.out.print("Please enter a floating-point number: ");\n        double nA = input.nextDouble();     \n\n        double nB = Math.pow(E, nA);     //mathematical equation\n\n        int value = (int) nB;    //convert nB to an int\n\n        System.out.printf("nB = %f", value);\n    }\n}  \n
Run Code Online (Sandbox Code Playgroud)\n

我知道,小而简单,可怜;_; 我也尝试在这里查找类似的问题,但任何评论者发现我三次检查的所有错误都是我的。另外,如果有人可以帮助我更好地理解错误消息,我将非常感激。谢谢你!!

\n

ETO*_*ETO 8

尝试使用%d而不是%f

System.out.printf("nB = %d", value);
Run Code Online (Sandbox Code Playgroud)

有关格式设置的更多详细信息,请参阅此页面