ホームページ >Java >&#&チュートリアル >Java フォーマット出力例外 (FormattedOutputException) の解決策

Java フォーマット出力例外 (FormattedOutputException) の解決策

PHPz
PHPzオリジナル
2023-08-25 22:30:381373ブラウズ

Java フォーマット出力例外 (FormattedOutputException) の解決策

Java フォーマット出力例外 (FormattedOutputException) の解決策

Java プログラミングでは、出力情報を読みやすく理解できるように、出力データをフォーマットする必要があることがよくあります。ただし、場合によっては、FormattedOutputException と呼ばれる例外が発生することがあります。これは、フォーマットされた出力プロセス中にエラーが発生したことを示します。この記事では、この例外の原因と解決策を紹介し、対応するコード例を示します。

1. 例外原因の分析
FormattedOutputException 例外は通常、String クラスの format() メソッドを使用して出力をフォーマットするときに発生します。 format() メソッドを使用するときは、通常、フォーマット文字列と対応するパラメーターを渡します。ただし、フォーマット文字列内のプレースホルダーが実際のパラメーターの型と一致しない場合は、FormattedOutputException 例外が発生します。

2. 解決策
FormattedOutputException 例外を解決するには、書式文字列内のプレースホルダーと実際のパラメータの一致、書式文字列内の特殊文字のエスケープという 2 つの点に注意する必要があります。

  1. プレースホルダーとパラメーターの一致
    フォーマットされた文字列でプレースホルダー "%s" を使用する場合、それは文字列型パラメーターに置き換える必要があることを意味します。渡す実際のパラメータが文字列型でない場合、FormattedOutputException が発生します。この問題を回避するには、パラメータのタイプに基づいて適切なプレースホルダを選択する必要があります。たとえば、パラメータが整数型の場合は、プレースホルダとして「%d」を使用する必要があり、パラメータが浮動小数点型の場合は、プレースホルダとして「%f」を使用する必要があります。以下はサンプル コードです:
public class FormattedOutputExample {
    public static void main(String[] args) {
        String name = "Tom";
        int age = 20;
        double height = 1.80;

        // 错误示例,会导致FormattedOutputException异常
        System.out.format("My name is %s, age is %d, height is %f", name, age, height);

        // 正确示例
        System.out.format("My name is %s, age is %d, height is %.2f", name, age, height);
    }
}

上記のサンプル コードでは、形式文字列で 3 つのプレースホルダーを使用しています: %s、%d、%f。パラメータ名は文字列型であるため、プレースホルダとして「%s」を使用します。同様に、パラメータ age は整数型であるため、プレースホルダとして「%d」を使用します。パラメータの高さは浮動小数点型です。そのため、プレースホルダーとして「%f」を使用し、小数点以下 2 桁のみが保持されることを示すために「.2」を渡しました。

  1. 特殊文字のエスケープ
    フォーマットされた文字列では、一部の特殊文字をエスケープする必要があります。エスケープしないと、FormattedOutputException が発生します。たとえば、フォーマット文字列にパーセント記号「%」を出力したい場合は、「%%」を使用してエスケープする必要があります。以下はサンプル コードです。
public class FormattedOutputExample {
    public static void main(String[] args) {
        double percentage = 0.8;

        // 错误示例,会导致FormattedOutputException异常
        System.out.format("The percentage is %d%", percentage * 100);

        // 正确示例
        System.out.format("The percentage is %d%%", (int)(percentage * 100));
    }
}

上記のサンプル コードでは、「%%」を使用してパーセント記号 % をエスケープすることで、FormattedOutputException の発生を回避しています。

3. 概要
Java 形式の出力を実行するときは、特殊文字のエスケープだけでなく、形式文字列内のプレースホルダーと実際のパラメータの一致にも注意する必要があります。プレースホルダーとパラメーターの型が一致し、特殊文字が正しくエスケープされている場合にのみ、FormattedOutputException 例外を回避できます。プレースホルダーとエスケープ文字を合理的に使用することで、Java プログラミングでより正確で読みやすい形式の出力を実現できます。

以上がJava フォーマット出力例外 (FormattedOutputException) の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。