Eclipse Java printf问题:PrintStream不适用。

4
我是一名编程入门者,我在使用Eclipse时遇到了问题,即使是最简单的形式,它也似乎不想运行printf
我的代码如下:
package Practice;

import java.io.*;

public class Printf {

    public static void main(String[] args) throws IOException
    {
        int num1 = 54;
        int num2 = 65;    
        int sum = num1 + num2;
        System.out.printf("Sum of %d and %d is %d.", num1, num2, sum);
    }
}

错误提示为:“方法PrintStream中的printf(String, Object[])对于参数(String, int, int, int)不适用。” 我将Java编译器兼容性级别设置为1.8,因此根据以前的帖子阅读应该没有问题。Eclipse Kepler版本已应用Java 8补丁(因此我可以符合1.8)。我找到的网站都没有给我任何其他线索,指出问题所在。

一个 int 不是一个 Object,因此 int 参数序列不能被解释为可变参数方法的 Object 序列。 - Raedwald
2
@Raedwald:当然可以:ints将被装箱为Integer。问题在其他地方。这段代码编译并运行良好。 - JB Nizet
@JBNizet 编译器应该能够在这种情况下进行多阶段推断吗?我印象深刻。 - Raedwald
为了更详细地运行我的Java JDK - Java SE 8u5,请添加进一步的细节。 - Ligardian
1
无论是JDK编译器的错误还是Eclipse编译器的错误,都有可能。即使在1.6版本中,JDK编译器也无法正确编译此代码。 - JB Nizet
1
代码本身没有问题。它也不需要Java 1.8。Java 1.5及以上版本都可以工作。Eclipse显然很困惑。 - Boann
3个回答

3
原来在Eclipse中,项目文件夹有自己独立的属性,与Eclipse主要设置不同。为了让它们能够编译版本1.6/1.7/1.8,您需要单独更改它们的属性设置,而不是从主要设置中更改。
基本上,您可以右键单击包资源管理器中的项目文件夹,然后选择“属性”>“Java编译器”,勾选“启用项目特定设置”,然后更改以下设置以使用1.5或更高版本的编译器兼容性级别,以便上述代码能够正常工作。
为什么会这样我不知道,但至少现在它可以工作了 :)

1
尝试使用System.out.format("Sum of %d and %d is %d.", num1, num2, sum);代替printf

-1

在项目文件夹上右键点击 -> 属性 -> Java编译器 -> 勾选(启用项目特定设置) -> 设置编译器兼容级别:1.6 -> 尽情享受Eclipse


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接