我完全没有Java经验,正在使用文本编辑器编写代码,所以我看不到问题出在哪里(我从命令行运行)我看到错误并知道它是什么,但我不知道如何解决它
System.out.print(String.format("%7d", Math.pow(n,2).toString()));
我也尝试过.toString()
基本上,如果我只打印n,那么它会起作用,但是power函数可能会由于返回类型而给我一个错误,但是pow应该返回一个double,字符串格式%7d也可能是double的对吗?
您使用了错误的格式说明符。%d
用于整数。
Math.pow()
返回无法在其上调用double
方法的原语toString()
。
尝试使用用于%7s
的String
,并将原始双精度值转换为Wrapper type
:-
String.format("%7s", Double.valueOf(Math.pow(n,2)).toString())
但是,您不需要将参数转换为String
,您可以将double value
与%f
直接使用:-
String.format("%.3f", Math.pow(n,2));
您很可能想在没有f
的情况下使用d
而不是toString
。如果您确实能够执行toString
(正如Quoi指出的那样,您不能从原语执行),则将无法使用期望使用Formatter
对象的Number
(在您的情况下为Double
)。
这是Formatter
使用的Formatter
。
问题在于String.format
方法。您已给定格式说明符String.format
,即toString
。您无法代替它来打印字符串。
双精度格式是%f而不是%d,因此请将代码修改为:
%7d
另请参见:integer
System.out.print(String.format("%7f", Math.pow(n,2)));
返回原始双精度值,您无法调用link方法。使用f而不是d,并且d是十进制整数。
Math#pow(double,double)
最好从Eclipse或任何其他编辑器开始编写代码。