首頁  >  文章  >  Java  >  使用Java中的MessageFormat需注意哪些問題?

使用Java中的MessageFormat需注意哪些問題?

WBOY
WBOY轉載
2023-04-22 20:31:061143瀏覽

問題排查

看了一段時間還是沒有什麼頭緒,這個時候內心開始慌了。趕緊看了一下提交紀錄,確認了一下程式碼不是我寫的,於是心裡稍微淡定了一點,別人問起也好說不是我寫的嘛!雖然程式碼不是我寫的,但是問題還是要繼續看的。畢竟拿了錢,就要工作的嘛。

接下來就只能分析程式碼了。首先分析了一下最有可能出錯的地方,就是解析指令查詢的回應邏輯。把這個地方的程式碼和手動執行指令得到的結果放在一起分析,發現根據這個回應結果是能夠正常的得到回應結果的。看了一會兒也確實沒有發現問題,又去看了一下指令拼接的程式碼,拼接的邏輯就一行,應該是不會出問題的。沒辦法了,又去看了看日誌,這時候發現日誌裡面有列印發送執行的指令。定睛一看,我擦,咋多了個逗號呢?又揉了揉眼鏡,確認自己沒有看錯誤。

這時候再回去看程式碼,怎麼看這個 MessageFormat 都有點問題,但是一時又找不到啥證據。

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

後來突然想起來之前看過的一個Wiki,好像有關於描述 MessageFormat 的注意事項。趕緊去找來看一下,果然裡面有寫到當 MessageFormat 的參數是數字類型時,當數字超過 3 位數字以上時,每隔 3 位會多增加一個因為的逗號。所以根據上面的程式碼邏輯得到的就是 show index 1,035 了,結果多了個英文的逗號,而將這個拼接出來的指令手動執行是查不出來資料的。終於破案了,撒花,撒花,撒花! ! !

如何解決

第一種方法是將數字轉為字串,然後再進行格式化,將上面的程式碼修改為如下:

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

第二種方法是增加 MessageFormat 的 FormatStyle將上面的程式碼修改為如下:

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

以上是使用Java中的MessageFormat需注意哪些問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除