printf方法不起作用

这是我第二次尝试使用PrintWriter#printf方法,我收到此错误消息:

PrintStream类型中的printf(String,Object [])方法不适用于参数(String,String)

我正在使用的代码有两个类。

这是第一堂课:

 class apples4 { public static void main(String[] args) { tuna4 tuna4Object = new tuna4("Kelsey"); tuna4Object.saying(); } } 

这是第二堂课:

 public class tuna4 { private String girlName; public tuna4(String name) { girlName=name; } public void setName(String name) { girlName=name; } public String getName() { return girlName; } public void saying(){ System.out.printf("Your first girlfriend was %s\n", getName() ); } } 

 Check your compliance level... 

在此处输入图像描述

自Java SE 5开始, PrintStream#printf方法可用。看起来您的代码正在由Java 4或之前编译/评估。

查看JDK安装和/或IDE设置,了解它如何编译/评估代码。


顺便说一句,如果使用Eclipse和Java 8,Eclipse需要一个插件来识别Java 8应用程序,因此默认情况下,求值程序会将项目降级为Java 1.4。 这发生在我身上,我通过在Eclipse Kepler中安装更新来解决它。 Eclipse Luna(最新的Eclipse版本)说它支持Java 8,但对我不起作用(不确定我是否遵循正确的步骤或做错了什么,但回到开普勒并且工作正常)。

这可能听起来很奇怪,但您可以将getName()方法的返回值强制转换为Object:

 System.out.printf("Your first girlfriend was %s\n", (Object) getName()); 

或者(创建请求的数组)甚至

 System.out.printf("Your first girlfriend was %s\n", new Object[] {(Object) getName()} ); 

有帮助。

我很抱歉我以前的post说我有同样的问题,我没有读过“在你发布阅读之前”对话框,说不要这样做。 嗯,经过很长一段时间寻找答案,我自己想通了。 在Preferences-> Java-> Compiler框中,左上角有一个名为“Configure Project Specific Settings …”的按钮。 单击它并将合规性级别更改为> = Java 1.5,或将其关闭。 繁荣,固定。

你可能需要改变执行环境,如果它不是java SE 1.8它可能是CDC或者其他的,所以你需要将它改为图1中的java SE 1.8细节1.expand你的项目然后2.right点击JRE系统库最后选择属性3.如果环境不是java SE 1.8,请将其更改为