web-dev-qa-db-ja.com

String型のメソッドformat(String、Object [])は、引数には適用できません(...)

これが私のコードです:

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)

ここでこのエラーが発生するのはなぜですか?どうすれば修正できますか?

13
Barnes Noble

Printfでも同様の問題が発生しました。 JDK1.6.0_27を使用しています。コンプライアンスレベルを1.6に設定すると、問題が解決しました。これは次のように設定できます。

プロジェクト>プロパティ> Javaコンパイラ

次のスレッドを参照することもできます。

単純なprintfでコンパイルエラーが発生するのはなぜですか?

15
yankeemike

Javaバージョン1.4以下を使用していますか? Autoboxing はJava 5。手動でボクシングを試してくださいintsからIntegers。

2
johnidis

フォーマットの署名は次のとおりです。

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

コードに間違いはないようです。私の提案では、IDE(テスト目的)を使用せずにコンソールアプリケーションでこれを実行してみてください。

0
subodh

クリーンビルドに投票します。特に手動で整数にボックス化しようとした場合、このように失敗する理由はありません。 Eclipseを使用していますか?時々混乱し、すべてを再構築する必要があります。

0
Ryan Stewart

jdk 1.4以下のバージョンがあります。 String.format()メソッドはJdk 1.5に導入されています。

coderanch postを見てください。

0
adatapost

Eclipseを使用していますか?

その場合、すべてが正しいと思われるときに、このような問題が発生することがあります。これが私がちょうどそれを解決した方法です:

  • プロジェクトを右クリックして、プロパティ-> Javaコンパイラに移動します
  • ドロップダウン(「コンパイラコンプライアンスレベル」)に設定された最近のコンパイラコンプライアンスレベル(私の場合は1.7)が表示されます。また、以下の「生成された.classファイルの互換性」と「ソースの互換性」にも同じバージョンが設定されています。

今:

  • チェックボックスを選択します:「デフォルトのコンプライアンス設定を使用する」
  • 下位バージョン(私の場合は1.1)が「生成された.classファイルの互換性」と「ソースの互換性」に設定されていることに注意してください。これが問題ですが、Eclipseはより高度なコンパイラを使用してコンパイルしていることを示していますが、そうではありません。
  • ドロップダウンの「コンパイラコンプライアンスレベル」で、他のレベルを選択してから、必要なレベルを選択します。変更は、以下の「生成された.classファイルの互換性」と「ソースの互換性」に反映されます。

これで問題は解決したはずです。

0
user1953366