Java 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

我在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;
  }
  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
差异。