String类型中的方法格式(String,Object [])不适用于参数(...)

时间:2011-10-09 04:57:49

标签: java string format

这是我的代码:

int hoursFormat = 1, minsFormat = 2, secsFormat = 3;
String timeFormat = String.format("%02d:%02d:%02d",hoursFormat, minsFormat, secsFormat);

这会产生编译错误:

Unresolved compilation problem: 
    The method format(String, Object[]) in the type String is not applicable for the 
      arguments (String, int, int, int)

为什么我在这里收到此错误以及如何解决?

6 个答案:

答案 0 :(得分:15)

我遇到了与printf类似的问题。我使用的是JDK 1.6.0_27。将合规性级别设置为1.6解决了我的问题。这可以通过以下方式设置。

项目>属性> Java编译器

您还可以参考以下主题:

Why am I getting a compilation errors with a simple printf?

答案 1 :(得分:2)

您使用的是Java 1.4或更低版本吗?直到Java 5才引入Autoboxing。尝试将int手动装箱到Integer s。

答案 2 :(得分:0)

您拥有jdk 1.4或更低版本。 String.format()方法在Jdk 1.5

中引入

查看coderanch帖子。

答案 3 :(得分:0)

我要投票支持干净的版本。没有理由它会像这样失败,尤其是当您尝试手动装箱到整数时。你在用Eclipse吗?有时会让人感到困惑,你只需要重建一切。

答案 4 :(得分:0)

格式的签名是:

public static String format(String format, Object ... args) {
    return new Formatter().format(format, args).toString();
    }

并且在您的代码中似乎没有任何错误,因为我的建议尝试使用控制台应用程序运行它而不使用任何IDE(用于测试目的)。

答案 5 :(得分:0)

你在使用eclipse吗?

如果有的话,如果一切似乎都是正确的话,会出现这样的问题。以下是我刚刚解决的问题:

  • 右键单击项目并转到properties-> Java Compiler
  • 您将看到最新的编译器合规级别(在我的情况下为1.7)在下拉列表中设置("编译器合规级别")。同样的版本也可以在下面的" Generated .class files compatibility"和"源兼容性"。

现在:

  • 选中复选框:"使用默认合规性设置"
  • 请注意,较低版本(在我的情况下为1.1)已设置为:"生成的.class文件兼容性"和"源兼容性"。这就是问题所在,虽然eclipse表明它正在使用更高的编译器进行编译,但事实并非如此。
  • 在下拉"编译器合规级别"选择其他级别然后选择你想要的级别。这些变化将反映在"生成的.class文件兼容性"和"源兼容性"。

这应该可以解决问题。