Java Eclipse中的更改返回类型错误
我在Eclipse中不断遇到以下错误:Java Eclipse中的更改返回类型错误,java,eclipse,return-type,Java,Eclipse,Return Type,我在Eclipse中不断遇到以下错误: "The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String)" 代码如下: public class names { private String nameOne; public void setName(String name){ nameOne=name; } p
"The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String)"
代码如下:
public class names {
private String nameOne;
public void setName(String name){
nameOne=name;
}
public String getName(){
return nameOne;
}
public void saying(){
System.out.printf("Your name is %s", getName());
}
}
请帮我解释一下我该怎么做。我试图去掉“线”,但那很愚蠢。我有点新,所以详细的解释不会过分(尽管简短、简单、正确的回答总是最好的)
问题是由于错误的编译器符合性级别造成的
要解决这个问题,您必须通过这样做来更改eclipse中的编译器遵从性级别
1) 右键单击您的项目
2) 单击属性
3) 单击左侧菜单上的“Java编译器”选项
4) 在右侧的JDK compliance部分下,将其更改为“1.5”或更高版本
Java编译器遵从性级别
编译器符合性级别指示源代码的哪个JDK级别
必须用于编译
例如:
如果你正在使用一些
在早期版本的Java JDK中定义的组件
从更高版本中删除。那么您必须使用旧版本
使用JDK编译代码。为此,eclipse提供了
多重合规水平,即;即使您使用的是最新版本
JDK的。您可以告诉编译器使用旧版本编译
JDK1.5在java.io.PrintStream类中实现了printf()方法,该方法提供了与C中stdio库中printf函数相同的格式化功能。
查看详细信息。这段代码对我来说编译得很好。您使用的是什么版本的Java?也许
printf
最近被改为接受Object…
而不是Object[]
@SotiriosDelimanolis java-version java-version“1.8.0”java(TM)SE运行时环境(build 1.8.0-b132)java热点(TM)64位服务器虚拟机(build 25.0-b70,混合模式)@user3473227:你的问题是说你在使用Eclipse,但是您的注释通过运行Java
来声明您的Java版本。您知道Eclipse没有使用java
命令来检测编译错误吗?您应该检查Eclipse的编译器遵从性级别。您可能可以通过传递新对象[]{getName()}来修复它
作为参数而不是getName()
。为什么这样可以解决问题getName()
已经返回了一个String
。是的,我不知道为什么要搜索这个字符串,但它对我有效。他们版本的printf
接受一个字符串和一个对象[]
,但是OP提供了一个字符串和字符串。这就是他们的错误nameOne
是他们班上的一个字段。我删除了我的否决票。如果您还解释了此更改的作用以及需要它的原因,我将提出。我希望您查找的差异是1.4版和当前版本之间的PrintStream
差异。