ホームページ  >  記事  >  Java  >  Java で MessageFormat を使用する場合、どのような問題に注意する必要がありますか?

Java で MessageFormat を使用する場合、どのような問題に注意する必要がありますか?

WBOY
WBOY転載
2023-04-22 20:31:061143ブラウズ

トラブルシューティング

しばらく調べても何もわからず、この時点でパニックになり始めました。すぐに提出記録を見て、自分が書いたコードではないことを確認したので、少し気持ちが落ち着きましたが、他人に聞かれたら、「自分が書いたものではない!」と言うのは簡単です。私はコードを書きませんでしたが、それでも問題を確認する必要があります。結局のところ、お金を手に入れたら、働かなければなりません。

次のステップはコードを分析することです。まず、最も可能性の高いエラー、つまりコマンド クエリの応答ロジックの解析を分析しました。ここのコードを手動でコマンドを実行した結果と合わせて解析したところ、この応答結果から正常に応答結果が得られることが分かりました。しばらく見て問題がなかったので、コマンドの結合コードを見てみると、結合ロジックは1行だけなので問題ないはずです。仕方なく再度ログを見てみると、今度は印刷、送信、実行するコマンドがログにあったことが分かりました。よく見てみると、なぜカンマが余分にあるのでしょうか。彼はもう一度眼鏡をこすって、正しく見えていることを確認しました。

この際、コードを遡って見てみると、この MessageFormat に何か問題があるのですが、今のところ証拠は見つかりません。

public Integer getMaxIndex() {
    // 返回最大的索引值 1035
}
public String queyBySsh() {
    //  这里期望拼接的命令是 show index 1035,但是实际的命令却是 show index 1,035
    // 最终得到的命令多了个英文的逗号 
    String command = MessageFormat("show index {0}", getMaxIndex());
    // 通过SSH执行这个命令查询
}

そこで突然、以前見たことのある Wiki のことを思い出しました。その Wiki には、MessageFormat についての説明が記載されていたようです。早速見てみたら、案の定、MessageFormatのパラメータが数値型の場合、3桁を超える場合は3桁ごとにカンマが追加されると書いてありました。 。したがって、上記のコードロジックによれば、show Index 1,035 が得られますが、結果には余分な英語のカンマがあり、手動で spliced コマンドを実行してもデータを見つけることができません。事件はついに解決しました、花を広げて、花を広げて、花を広げてください! ! !

解決方法

最初の方法は、数値を文字列に変換してから書式設定することです。上記のコードを次のように変更します:

public String queyBySsh() {
    // 这里拼接的时候先调用一下 String.valueOf() 方法
    String command = MessageFormat("show index {0}", String.valueOf(getMaxIndex()));
}

2 番目の方法この方法は、MessageFormatFormatStyle を追加し、上記のコードを次のように変更します:

public String queyBySsh() {
    // 这里的 # 就是定义的 FamatStyle
    String command = MessageFormat("show index {0, number, #}", getMaxIndex());
}

以上がJava で MessageFormat を使用する場合、どのような問題に注意する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。